Обсудить задачу

Эксплуатация / производительность

Ускорение сайта на MODX

Измеряю путь запроса от веб-сервера до шаблона и браузера, нахожу фактические узкие места и оптимизирую их по отдельности. Работа может затрагивать PHP, базу данных, кеш MODX, сниппеты, изображения и клиентский код.

Обсудить диагностику
Оператор ЭВМ вынимает застрявшую катушку перфоленты из тракта и выравнивает подающие ролики
Тормозила одна катушка. Подозревали весь завод. MODX / профиль запроса

01 Контекст

Скорость — это цепочка, а не один балл

Задержка может появляться в серверной конфигурации, запросе к базе, некешируемом сниппете, внешнем API, размере изображения или JavaScript в браузере. Одновременное включение всех оптимизаторов скрывает причину и усложняет дальнейшую поддержку.

Работа начинается с воспроизводимых измерений на характерных страницах. После каждого изменения проверяется тот же сценарий и фиксируется, какой участок цепочки изменился.

02 Исходная ситуация

Когда нужна диагностика производительности

01

Отдельные страницы отвечают медленно

Каталог, поиск, фильтр или личный раздел заметно отличается от простых информационных страниц.

02

Сайт замедляется под нагрузкой

Обычная проверка проходит нормально, но одновременные обращения создают очередь запросов или исчерпывают ресурсы.

03

Административная часть мешает работе

Сохранение ресурсов, очистка кеша или фоновые задачи MODX занимают непредсказуемое время.

04

После доработок стало хуже

Новый сниппет, интеграция, тема или расширение изменили профиль запросов и объём передаваемых данных.

03 Состав

Что исследуется и меняется

Состав работ определяется по измерениям, а не по универсальному списку оптимизаций.

01

Профиль запроса

Измеряю время ответа сервера, выполнение PHP, обращения к базе, сниппеты и внешние зависимости на выбранных маршрутах.

  • набор контрольных URL
  • профиль задержек
  • гипотезы по узким местам
02

MODX и база данных

Проверяю кеширование ресурсов и сниппетов, тяжёлые выборки, индексы, сессии, журналы и повторяющиеся вычисления.

  • перечень запросов
  • изменения кеша и кода
  • контроль после оптимизации
03

Серверный контур

Анализирую PHP-FPM, OPcache, веб-сервер, сжатие, заголовки кеширования и доступные ресурсы окружения.

  • профиль конфигурации
  • изменённые параметры
  • сценарий отката
04

Страница в браузере

Проверяю изображения, шрифты, CSS, JavaScript, последовательность загрузки и поведение внешних виджетов.

  • карта ресурсов
  • оптимизированные файлы
  • проверка ключевых шаблонов

04 Метод

Как проходит оптимизация

До каждого изменения сохраняется исходное измерение, чтобы отличить улучшение от случайного колебания.

  1. 01

    Выбор сценариев

    Определяю характерные страницы, действия пользователей, состояние кеша и условия проверки.

    На выходе: воспроизводимый набор измерений
  2. 02

    Профилирование

    Разделяю задержку между сетью, сервером, PHP, базой, MODX и браузером.

    На выходе: карта узких мест
  3. 03

    Точечные изменения

    Оптимизирую наиболее значимый участок, фиксирую конфигурацию и повторяю исходный сценарий.

    На выходе: сопоставимые измерения до и после
  4. 04

    Передача контроля

    Документирую изменения, ограничения кеша и признаки, за которыми нужно следить при дальнейшем развитии.

    На выходе: настройки и контрольный регламент

05 Ответственность

Кто за что отвечает

Я отвечаю

  • за воспроизводимую диагностику
  • за согласованные изменения кода и окружения
  • за повторную проверку и документацию ограничений

Со стороны проекта нужны

  • доступ к коду, MODX, серверу и базе
  • описание медленных пользовательских сценариев
  • данные о нагрузке и недавних изменениях

06 Оценка

От чего зависит объём

Оптимизация небольшого сайта с медленным внешним API и крупного каталога с тяжёлыми запросами — разные задачи.

  1. 01тип и количество медленных сценариев
  2. 02архитектура сниппетов и шаблонов
  3. 03размер и структура базы данных
  4. 04доступ к серверной конфигурации
  5. 05внешние API и виджеты
  6. 06наличие данных о нагрузке и тестового окружения

Первый этап — диагностика. Без неё нельзя обоснованно выбирать между кешем, изменением кода и переносом на другое окружение.

07 Среда

Инструменты профилирования

Набор зависит от доступа к окружению и характера проблемы.

  • 01MODX Revolution
  • 02логи PHP и веб-сервера
  • 03MySQL или MariaDB
  • 04OPcache и PHP-FPM
  • 05Redis или Memcached
  • 06PageSpeed Insights и браузерный Performance

08 Вопросы

До начала работы

01Почему MODX может работать медленно?

Причиной бывают некешируемые сниппеты, тяжёлые запросы, внешние API, серверная конфигурация, большие изображения или клиентский код. Нужны измерения конкретной страницы.

02Всегда ли нужен Redis или Memcached?

Нет. Внешний кеш полезен только при подходящем профиле нагрузки и корректных правилах сброса. Для части проектов достаточно исправить код или настроить встроенный кеш.

03PageSpeed показывает реальную скорость?

Он полезен для лабораторной проверки клиентской части, но не объясняет всю серверную цепочку и поведение сайта под нагрузкой. Использую его вместе с другими измерениями.

04Можно ускорить miniShop2?

Да. Отдельно проверяются выборки каталога, фильтры, корзина, служебные таблицы, кеш и интеграции с учётными системами.

05Нужно ли менять хостинг?

Только если измерения показывают ограничение окружения и его нельзя устранить настройкой. Перенос не исправит медленный запрос или некешируемую логику сам по себе.

10 Следующий шаг

Найти узкое место

Пришлите адрес сайта и опишите, какие страницы или действия работают медленно и при каких условиях. Я обозначу данные и доступы для первого измерения.

Обсудить диагностику