Оптимізація MODX: кеш, БД, PHP-FPM, Nginx

Прискорення MODX: від діагностики до продакшену

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Оптимізація MODX: кеш, БД, PHP-FPM, Nginx
Середній
~2-3 дні

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1422
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1288
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    984
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1250
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    988
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1001

Прискорення MODX: від діагностики до продакшену

MODX Revolution — гнучка CMS, але без правильного налаштування кешування та конфігурації сервера вона легко впирається в TTFB 2–4 секунди навіть на простих сайтах. TTFB 2–4 секунди — типова картина для сайтів, де кожен запит генерує сотні SQL-запитів через парсинг тегів [[*]]/[[+]]. Відсутність об'єктного кешу погіршує ситуацію: файловий кеш не справляється з навантаженням, дискові операції stat() додають затримки. Ми, команда з 5-річним досвідом та 100+ успішних проєктів з прискорення MODX, допоможемо скоротити час завантаження до 200 мс та пройти Core Web Vitals. Економія на ресурсах хостингу після оптимізації зазвичай сягає 30-50%. Отримайте консультацію з оптимізації MODX — зв'яжіться з нами для безкоштовного аудиту.

Як визначити вузьке місце MODX?

Перший крок — зрозуміти, що саме гальмує. MODX логує повільні запити, якщо включити в core/config/config.inc.php:

define('MODX_CONFIG_KEY', 'config'); // в System Settings: // log_level = 4 (DEBUG) // log_target = FILE 

Більш точний інструмент — xDebug + Blackfire або просто EXPLAIN в MySQL/MariaDB для запитів, які MODX генерує при рендері сторінки. Типові проблеми:

  • modResource читає всі поля, включаючи content, навіть коли потрібен лише pagetitle
  • getResources без limit робить SELECT * по всіх дочірніх ресурсах
  • снипети без &cache=1 виконуються на кожен запит

Досвідчені інженери також перевіряють налаштування PHP-FPM та OPcache — часто проблема не в самому MODX, а в конфігурації оточення. Вкладення в оптимізацію зазвичай окупаються вже через 2-3 місяці за рахунок зниження навантаження на сервер.

Кешування на рівні MODX

Системний кеш зберігається в core/cache/. Для production переконайтеся, що директорія має права 755 і не змонтована через tmpfs без достатнього розміру.

Оптимальні налаштування в System Settings:

Параметр Рекомендоване значення
cache_resource_handler xPDOFileCache (за замовчуванням) або Redis
cache_default_lifetime 3600–86400
cache_context_settings 1
compress_js 1
compress_css 1

Чому Redis кращий за файловий кеш?

Для Redis-кешу встановлюється пакет Redis (modmore або аналог) і в core/config/config.inc.php додається:

$config_options = [ 'cache_path' => MODX_CORE_PATH . 'cache/', 'cache_default_handler' => 'xPDORedisCache', 'cache_xpdo_handler' => 'xPDORedisCache', 'redis_host' => '127.0.0.1', 'redis_port' => 6379, 'redis_db' => 0, ]; 

Після перемикання на Redis TTFB знижується на 30–50% на високонавантажених сайтах, тому що відпадають дискові операції на stat() файлів кешу. Порівняння:

Тип кешу Середній TTFB Навантаження на диск
Файловий 800–1200 мс Висока
Redis 200–400 мс Немає

Згідно з даними Redis, in-memory зберігання даних значно прискорює операції читання. На практиці це знижує витрати на серверні ресурси на 30-40%.

Як оптимізувати снипети та pdoTools?

Некешовані виклики [[!SnippetName]] — головне джерело повільності. Аудит через пошук по шаблонах і чанках: команда grep -r '\[\[!' по папці елементів. Правила:

  • Якщо снипет не залежить від сесії/корзини/користувача — робимо кешованим [[SnippetName? &cache="1" &cacheExpires="3600"]]
  • getResources, pdoTools кешуються через вбудований параметр &cache
  • FormIt та Login — завжди некешовані, виносити в окремі чанки

pdoTools замість getResources — критично для сайтів з великими каталогами. pdoTools використовує JOIN замість множинних запитів. Приклад виклику: [[pdoResources? &parents=15 &depth=2 &limit=20 &sortby=publishedon &sortdir=DESC &cache=1 &cacheExpires=1800]]

Приклад конфігурації OPcache

Для максимальної продуктивності PHP-OPcache використовуйте цю конфігурацію:

; /etc/php/8.1/fpm/conf.d/10-opcache.ini opcache.enable=1 opcache.memory_consumption=256 opcache.interned_strings_buffer=16 opcache.max_accelerated_files=10000 opcache.validate_timestamps=0 opcache.revalidate_freq=0 opcache.fast_shutdown=1 ; /etc/php/8.1/fpm/pool.d/modx.conf [modx] pm = dynamic pm.max_children = 20 pm.start_servers = 5 pm.min_spare_servers = 3 pm.max_spare_servers = 8 pm.max_requests = 500 request_terminate_timeout = 30s 

pm.max_requests = 500 — запобігає витокам пам'яті в довгоживучих снипетах.

Як налаштувати Redis для MODX: покрокова інструкція

  1. Встановіть пакет Redis через менеджер пакетів MODX (наприклад, Redis від modmore).
  2. Внесіть зміни в config.inc.php, як показано вище.
  3. У системних налаштуваннях MODX встановіть cache_resource_handler в xPDORedisCache.
  4. Очистіть існуючий кеш через адміністративну панель.
  5. Перевірте, що Redis сервер запущений і доступний на 127.0.0.1:6379.
  6. Протестуйте швидкість завантаження сторінки — зазвичай TTFB падає в 2-3 рази.

Конфігурація Nginx для MODX

server { location ~* \.(js|css|png|jpg|webp|woff2|ico|svg)$ { expires 1y; add_header Cache-Control "public, immutable"; access_log off; } location ^~ /core/ { deny all; } gzip on; gzip_types text/plain text/css application/json application/javascript image/svg+xml; gzip_min_length 1024; gzip_comp_level 5; } 

Індекси бази даних

MODX не додає всі потрібні індекси автоматично. Для сайтів з 10 000+ ресурсів додаємо:

ALTER TABLE modx_site_content ADD INDEX idx_parent_published (parent, published), ADD INDEX idx_context_published (context_key, published), ADD INDEX idx_publishedon (publishedon); 

Після додавання індексів EXPLAIN SELECT на типовий запит getResources покаже ref замість ALL. Це знижує навантаження на сервер і економить до 40% ресурсів хостингу, що зменшує витрати на інфраструктуру.

Що входить в оптимізацію MODX під ключ?

У базову оптимізацію входить: аудит поточної конфігурації (логи, профілювання, EXPLAIN), налаштування Redis-кешу та перенесення файлового кешу, оптимізація PHP-FPM, OPcache, Nginx, додавання необхідних індексів у MySQL, стиснення CSS/JS та налаштування браузерного кешування, перевірка Core Web Vitals до та після, документація щодо внесених змін. Для складних випадків — переписування некешованих снипетів на кешовані. Гарантуємо покращення TTFB мінімум на 50%. Результати підтверджуються вимірами Core Web Vitals.

Терміни робіт

Базова оптимізація (кеш, PHP-FPM, nginx, індекси): 2–3 дні. Переведення некешованих снипетів на кешовані + аудит шаблонів: 3–5 днів залежно від кількості елементів. Перехід на Redis-кеш з тестуванням: 1 день додатково. Кожен етап фіксується вимірами.

Замовте аудит продуктивності MODX

Залиште заявку — ми безкоштовно проаналізуємо ваш сайт і запропонуємо план оптимізації. Гарантуємо результат: підтверджені виміри Core Web Vitals до та після. Зв'яжіться з нами, щоб почати. Оптимізація знижує витрати на інфраструктуру та прискорює сайт, що позитивно впливає на конверсію.