Перейти до основного вмісту

Швидкодія

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 та захист від ботів.

  1. Підключіть домен до Cloudflare (змінити NS-записи у реєстратора).
  2. Встановіть модуль 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 — з гарантією пришвидшення сайту. Замовити можна в особистому кабінеті.

Пропозицію в адмінці можна сховати посиланням «Не показувати цю пропозицію» і повернути тим самим місцем.