Чому гальмує OkayCMS і що з цим робити
Стаття
OkayCMS — легка система, і на невеликому каталозі вона працює швидко без будь-яких налаштувань. Проблеми починаються з ростом асортименту, і причини в неї доволі специфічні.
Особливість: у ядрі немає кеш-шару
На відміну від більшості платформ, тут немає вбудованого механізму кешування, який можна просто ввімкнути в налаштуваннях. Кожна сторінка збирається запитами до бази щоразу. Поки товарів кілька сотень — непомітно; на десятках тисяч це головний обмежувач.
Рішення — або зовнішній кеш на рівні веб-сервера, або окреме розширення. Це не «галочка в адмінці», а окрема робота.
Запити до бази
Друге типове вузьке місце. Сторінка каталогу з фільтрами й лічильниками може давати сотні запитів. Особливо це помітно, коли до товарів прив'язані варіанти: кожен варіант тягне свій запит.
Діагностика починається з логу повільних запитів. Найчастіше виявляється кілька конкретних запитів без потрібних індексів, які виконуються на кожному завантаженні.
Зображення
Обробка зображень «на льоту» зручна, доки не приходить робот і не починає обходити каталог. Тоді сервер починає генерувати сотні мініатюр одночасно. Симптом упізнаваний: сайт стає повільним у моменти, коли відвідувачів мало.
Сторонні модулі
Ринок модулів для OkayCMS вужчий, ніж для великих платформ, і якість коду різна. Типова проблема — модуль, що робить запит у циклі по кожному товару. На сторінці з 24 товарами це 24 зайві запити.
З чого починати
- Виміряти час відповіді сервера окремо від завантаження сторінки.
- Увімкнути лог повільних запитів і подивитись, що саме повторюється.
- Перевірити, скільки запитів робить одна сторінка каталогу.
- Подивитись, чи не генеруються зображення при кожному запиті.
- Вимкнути сторонні модулі по черзі й порівняти.
Практична робота — оптимізація швидкодії OkayCMS. Суміжне: налаштування кешування, тюнінг бази, налаштування сервера.