Швидкодія
eCMS9 працює і на звичайному хостингу, і на власному сервері. Наскільки швидко — залежить від того, як налаштовано PHP, вебсервер і базу. Щоб не гадати, адмінка перевіряє це сама: Налаштування → Інформація системи, розділ «Швидкодія».
Кожен рядок має позначку:
| Позначка | Що означає |
|---|---|
| OK | Налаштовано добре, нічого робити не треба. |
| !! (червоне) | Критично: сайт помітно повільніший, ніж міг би бути. Виправляйте першим. |
| ! (жовте) | Варто виправити, коли буде змога. |
| i (синє) | Порада. Дає виграш, але потрібна не всім. |
Під порадою часто є кнопка «Налаштування» — готові рядки, які можна скопіювати в панель хостингу або передати підтримці хостера.
Перевірка йде наживо при кожному відкритті сторінки: змінили налаштування хостингу — оновіть сторінку й побачите результат.
Версія PHP
eCMS9 підтримує PHP 8.2–8.5, мінімальна версія — 8.2. Для нових інсталяцій рекомендовано 8.5 після перевірки сумісності модулів. Індикатор продуктивності в адмінці може радити новішу версію; це не змінює мінімальної вимоги продукту.
Версію перемикають у панелі хостингу (cPanel → «Select PHP Version», CyberPanel → «Change PHP», Plesk → «PHP Settings») або через підтримку.
OPcache
OPcache зберігає скомпільований код PHP у пам'яті. Без нього PHP на кожному запиті заново читає й розбирає тисячі файлів — це найбільша втрата швидкості з можливих. Якщо OPcache вимкнено, розділ покаже це червоним.
Навіть увімкнений OPcache часто має замалі стандартні ліміти: система разом із
шаблонами — це близько 9 000 файлів, а стандартний max_accelerated_files —
10 000. Рекомендовані значення:
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=20000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
realpath_cache_size=4096K
realpath_cache_ttl=600
validate_timestamps=1 лишайте увімкненим: тоді оновлення ядра й модулів
підхоплюються самі, без перезапуску PHP.
На звичайному хостингу ці рядки вносять у «PHP Options» / php.ini / .user.ini
(що саме доступно — залежить від хостера). Якщо доступу немає — перешліть рядки
підтримці.
Попереднє завантаження (preload)
Тільки для власного сервера або VPS. PHP один раз під час старту завантажує ядро в пам'ять, і далі кожен запит його вже не підтягує. Виграш — кілька мілісекунд на запит. На спільному хостингу зазвичай недоступно, тож синя позначка там — це нормально.
opcache.preload=/шлях/до/app4/preload.php
opcache.preload_user=<користувач сайту>
Після зміни preload потрібен перезапуск PHP. Після оновлення ядра теж: preload тримає старі файли в пам'яті до перезапуску.
Кеш сторінок на сервері
Найбільший виграш для відвідувачів: сторінку для гостя віддає вебсервер із кешу, PHP і база не задіяні взагалі.
- LiteSpeed / OpenLiteSpeed — увімкніть LSCache для сайту (у CyberPanel та на більшості LiteSpeed-хостингів це один перемикач). eCMS9 сама каже кешу, що можна кешувати, а що ні: кошик, особистий кабінет і адмінка в кеш не потрапляють.
- Nginx / Apache без LiteSpeed — повного кешу сторінок «з коробки» немає. Допоможе Cloudflare (нижче) або переїзд на LiteSpeed-хостинг чи наш VPS.
Cloudflare
Безкоштовний тариф Cloudflare дає CDN (статика віддається з найближчого до відвідувача вузла), стиснення Brotli, HTTP/2 і HTTP/3 та захист від ботів.
- Підключіть домен до Cloudflare (змінити NS-записи у реєстратора).
- Встановіть модуль Cloudflare з Модулі → Магазин модулів: він сам скидає кеш Cloudflare, коли ви змінюєте товари, ціни чи сторінки.
Якщо сайт уже за Cloudflare, а модуля немає, розділ покаже жовту позначку: після змін відвідувачі можуть бачити стару версію сторінки.
Рядок «Протокол HTTP» показує, як браузер спілкується із сервером. HTTP/1.1 завантажує файли по черзі; HTTP/2 — паралельно. Вмикається в хостера (потрібен HTTPS) або автоматично через Cloudflare.
Кеш даних і сесії (Redis)
За замовчуванням система тримає кеш і сесії відвідувачів у файлах. Це працює
скрізь, але на великих каталогах і під навантаженням пам'ять швидша.
Якщо на хостингу доступні Redis, Memcached або APCu, розділ підкаже рядок для
файла .env у корені сайту:
cache.handler = redis
Сесії в Redis (менше блокувань, коли відвідувач відкриває кілька вкладок):
session.driver = 'CodeIgniter\Session\Handlers\RedisHandler'
session.savePath = 'tcp://127.0.0.1:6379'
Адресу Redis уточніть у хостера: на спільних хостингах це часто сокет, а не
127.0.0.1:6379.
База даних
- Тип таблиць. Таблиці MyISAM блокуються цілком при кожному записі. Система сама переводить їх в InnoDB у фоні через планувальник — потрібно лише, щоб він працював.
- Пам'ять бази (
innodb_buffer_pool_size). Коли база більша за цю пам'ять, частина запитів читає з диска. На власному сервері збільште значення до підказаного в розділі; на спільному хостингу ним керує хостер.
Зображення
Сучасні формати WebP і AVIF удвічі-втричі легші за JPEG за тієї ж якості. Розділ перевіряє, чи PHP вміє їх створювати (GD або Imagick), і чи встановлено модуль Pixozip, який стискає зображення й віддає браузеру найлегший формат.
Модуль «Оптимізатор»
Оптимізатор працює зі сторінкою, яку бачить браузер: об'єднує й мінімізує CSS та JS, відкладає скрипти, проставляє розміри й ліниве завантаження зображень, вбудовує критичний CSS. «Інформація про систему» перевіряє п'ять окремих пунктів і для кожного каже, чи зроблено і чим саме:
- WebP/AVIF — віддає модуль Pixozip, не сам Оптимізатор; якщо Pixozip не встановлено, рядок веде в магазин модулів.
- Lazy-load —
loading="lazy"/decoding="async"на всіх зображеннях, крім першого контентного (це і є ваш LCP). - Розміри зображень (CLS) — локальним зображенням без
width/heightпроставляється реальний розмір, щоб верстка не «стрибала» під час завантаження. - font-display — у
@font-faceдодаєтьсяfont-display: swap, текст видно ще до завантаження шрифту. - Стиснуті збірки — об'єднані CSS/JS віддаються ще й у gzip, а якщо на хостингу є розширення brotli — і в brotli.
Якщо головний перемикач Оптимізатора вимкнено, рядок це показує і веде в налаштування модуля — жоден із п'яти пунктів без нього не працює.
Додаткові функції Оптимізатора вмикайте по одній і перевіряйте вітрину: деякі теми чи сторонні віджети можуть розраховувати на інший порядок скриптів.
Інші перевірки
- Режим роботи PHP — як PHP під'єднано до вебсервера. LiteSpeed LSAPI, PHP-FPM і FastCGI — швидкі. Простий CGI запускає PHP заново на кожен запит — попросіть хостинг змінити режим. FrankenPHP підтримується в класичному режимі; worker-режим ядро поки не підтримує.
- Ліміт пам'яті PHP — щонайменше 256M, інакше імпорт, фіди й звіти можуть обриватися.
- Xdebug — інструмент налагодження, у кілька разів сповільнює PHP. На робочому сайті його не має бути.
- Режим роботи — має бути
production. Режимdevelopmentпоказує відвідувачам технічні помилки й працює повільніше. - Кеш конфігурації — увімкнений за замовчуванням, економить 10–45 мс на кожному запиті.
- Фонові задачі — чи працює планувальник.
Режим розробника
Унизу розділу є кнопка «Увімкнути на 30 хв». Вона показує панель налагодження (час відповіді, SQL-запити, пам'ять) лише у вашому браузері: відвідувачі нічого не бачать, файли правити не треба. Через 30 хвилин режим вимикається сам або кнопкою «Вимкнути».
Хочете ще швидше?
Ми налаштуємо сервер саме під eCMS9 або надамо готовий VPS: PHP 8.5, OPcache, Redis, кеш сторінок, HTTP/3 — з гарантією пришвидшення сайту. Замовити можна в особистому кабінеті.
Пропозицію в адмінці можна сховати посиланням «Не показувати цю пропозицію» і повернути тим самим місцем.