Перейти к основному содержанию

Разогнать за 60 минут

Если вам кажется что ваш Drupal сайт долго грузится, то скорее всего вам не кажется. Всем нам приходится платить скоростью за гибкость. Конечно, эта проблема не существенна на фоне современного железа, если ваш сайт в надежных руках.

В этой статье мы рассмотрим пример беглого аудита при наличии всего навсего доступа в админ панель сайта и модуля Devel.

Первым делом включим sql логирование:

admin/config/development/devel

admin/config/development/devel

 

Теперь попробуем прочитать логи.

 

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

 

Логи

Смотрим в чем же дело и находим 208 запросов от модуля Locale.

Запросы от модуля Locale

Видимо сайт создавался сразу на русском языке, а не переводился на русский. От этого названия меток для полей, заголовки блоков, и все прочие строки в логике Drupal считаются не переведенными исходными строками, для каждой и которых выполняется дополнительный запрос в базу. Чтобы избежать этого, стоит задавать исходные настройки на английском а потом переводить их на русский.

 

Также, стоит обращать внимание на наличие запросов из variable_set. Ищеем…
Наличие запросов из variable_set

Целых 4 вызова с главной. Это плохая практика, variable_set преднозначен для хранения настроек модуля. Где то в админ части сайта мы можем сохранить данные с помощью variable_set, и на выводе запросить данные из variable_get. Тут же данные сохраняются на выводе, что 4 раза скидывает кеш переменных, и перезаписывает его. 4 delete + 4insert + 4update запроса.

Ну и конечно insert(ы) c dblog, который лучше бы отключить для продакшен сайта, или не использовать его в логике вывода.

 

Дальше больше:
Дальше больше

Дальше больше

Сложно понять зачем постоянно 70 раз писать и тут же удалять строку из таблицы крона.

 

189 загрузок сущностей. Нет вопросов… Но кеш… Есть же кеш…
189 загрузок сущностей
 

Странно видеть 55 запросов настроек полей с главной, каждый раз. Это должно кешиться. То что этого не происходит - тревожной симптом.

55 запросов настроек полей с главной


Меню стоит рендерить один раз и оставялять в кеше на веки вечные:
Рендеринг меню

 

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