В этой статье мы рассмотрим пример беглого аудита при наличии всего навсего доступа в админ панель сайта и модуля Devel.
Первым делом включим sql логирование:
admin/config/development/devel
Теперь попробуем прочитать логи.
На главной странице предоставленного сайта мы увидели 1296 запросов в базу, при включенном кеше, что само по себе подозрительно и избыточно.
Смотрим в чем же дело и находим 208 запросов от модуля Locale.
Видимо сайт создавался сразу на русском языке, а не переводился на русский. От этого названия меток для полей, заголовки блоков, и все прочие строки в логике Drupal считаются не переведенными исходными строками, для каждой и которых выполняется дополнительный запрос в базу. Чтобы избежать этого, стоит задавать исходные настройки на английском а потом переводить их на русский.
Также, стоит обращать внимание на наличие запросов из variable_set. Ищеем…
Целых 4 вызова с главной. Это плохая практика, variable_set преднозначен для хранения настроек модуля. Где то в админ части сайта мы можем сохранить данные с помощью variable_set, и на выводе запросить данные из variable_get. Тут же данные сохраняются на выводе, что 4 раза скидывает кеш переменных, и перезаписывает его. 4 delete + 4insert + 4update запроса.
Ну и конечно insert(ы) c dblog, который лучше бы отключить для продакшен сайта, или не использовать его в логике вывода.
Дальше больше:
Сложно понять зачем постоянно 70 раз писать и тут же удалять строку из таблицы крона.
189 загрузок сущностей. Нет вопросов… Но кеш… Есть же кеш…
Странно видеть 55 запросов настроек полей с главной, каждый раз. Это должно кешиться. То что этого не происходит - тревожной симптом.
Меню стоит рендерить один раз и оставялять в кеше на веки вечные:
Меньше часа на анализ проблем, а мы даже не видя кода проекта уже можем делать первые выводы.