Как стать автором
Обновить

Кэширование на Drupal

Время на прочтение3 мин
Количество просмотров18K
Недавно я столкнулся с тем, что мой сайт на Drupal стал тормозить. Причем, сайт не особо то и посещаемый. В конечном счете, проблема решилась переходом на другой хостинг (shared-хостинг от Руцентра не выдерживал никак), но рассказать я хочу не об этом, а о проблемах ускорения Drupal путем кэширования, с которыми я столкнулся.

Итак, какое инструменты для ускорения существуют на Drupal?



— Встроенное кэширование по адресу admin/settings/performance. У кэширования есть два режима, обычный и агрессивный. Агрессивный не рекомендуется для использования, поскольку он конфликтует со многими модулями. Нормальный, в принципе, никаких тяжелых последствий не имеет. Рассчитан только на анонимных пользователей, и не кэширует страницы, на которых работает CAPTCHA.

— Модуль boost. Как и встроенное кэширование, этот модуль рассчитан на анонимных пользователей. Хранит он свои данные на диске. Если вы включаете boost, рекомендуется выключать кэширование обычное. Boost заранее готовит статические страницы для анонимных пользователей, поэтому со включенным boost у анонимов сайт «летает». К сожалению, boost имеет следующие недостатки. Для адекватного обновления страниц на сайте, кэш должен регулярно очищаться (boost старается, очищать его по частям при изменениях, но это не всегда работает нормально). Поэтому постоянно должен перестраиваться кэш всего сайта. Что уже дает нагрузку на хостинг, приводя к тому, что для анонимов сайт «летает», а для зарегистрированных — тормозит еще больше. Кроме того, при перестроении кэша он может стягивать вставленные картинки из внешних источников, приводя к росту трафика на сайте. Если у вас тариф с ограничением трафика, то это может вас серьезно огорчить.

— Кэширование при помощи nginx для анонимов. Хорошо описано тут в хорошей статье на Хабре. Я бы от себя добавил вот что: не забудьте настроить nginx так, чтобы всякие картинки отдавал именно он, а не Apache. Этим вы сэкономите много оперативки.

— Модуль authcache для кэширования страниц для зарегистрированных пользователей. Определяется набор ролей, для которых кэширование разрешено. Страница кэшируется, если все роли пользователя попали в этот набор. Собственно, по любому подмножеству разрешенных ролей строится версия кэшированной страницы. Поэтому если вы включаете этот модуль, делайте поменьше разных ролей. Кроме того, не включайте его для анонимов — с этим существенно лучше справится boost. Такие вещи, как имя пользователя, authcache кэширует в виде шаблона, заменяя его при непосредственном выводе страниц. Поэтому для зарегистрированных все равно пойдет не чистый html, а некоторая подготовка. Которая может быть медленной, поскольку как мы помним, сервер у нас нагружен, поскольку все время работает boost. Хранить данные лучше всего при помощи модуля cacherouter, который, в свою очередь, имеет опции. Для меня лучше всего подходило хранение на диске.

— Оптимизация javascript и css, чтобы грузить один файл, а не много. Включается на странице встроенного кэширования. Не забывайте очищать кэш при обновлении модулей — иначе css может вообще у части пользователей не загрузиться! Собственно, и во всех выше описанных способах лучше всего очищать кэш после изменений на сайте.

— Использование data uri для вставки картинок прямо в css. Осуществляется модулем css_emimage.

Вот, собственно, на мой взгляд, основные методы ускорения Друпала. Ну и, конечно, переезд на хороший хостинг тоже рулит. И я все-таки просуммирую проблемы:

— На слабом хостинге кэширование вас не спасет. Потому что кэширование — это тоже постоянная нагрузка на хостинг.
— Надо определяться, чье кэширование для вас важнее, анонимов или зарегистрированных. Возможно, оба одновременно будут работать плохо
— Вы (администратор сайта) под своим аккаунтом принципиально не видите, как работает кэширование
— Надо не забывать отключать весь кэш при обновлении модулей
— Включенный boost тратит трафик
— И вообще. Drupal удобен, но тяжеловесен. Приходится это признать.
Теги:
Хабы:
Всего голосов 44: ↑36 и ↓8+28
Комментарии62

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн