Быстродействие сайта на Друпал, кеширование
Здравствуйте, Иван. Снова обращаюсь к Вам за помощью. У меня получается очень тяжелый сайт на друпал, есть ли какие то методы, что бы улучшить производительность сайта, например с помощью каких либо модулей. Медленно грузятся страницы. Почитала о модуле Boost. Как его праильно и корректно настроить,чтоб не навредить? Может есть еще какие-то методы. Изображения я уменьшаю, флешками почти не пользуюсь. И сколько считается нормой по времени загрузка страницы? Подскажите ,пожалуйста. Спасибо заранее!
Здравствуйте, для начала решите для кого вы будете кешировать, для анонимов или для зарегистрированных пользователей. Анонимы обычно на различных новостных и информационных сайтах, зарегистрированные на соц. сетях или сайты с функциями соц. сетей.
Если для анонимов, то проще всего поставить модуль boost и забыть о проблемах с нагрузкой. Boost сгенерирует html странички и нагрузка снизится. Как вариант для анонимов на сервере можно настроить Varnish + Pressflow, хорошо это описано в видео lullabot здесь можно скачать:
http://rutracker.org/forum/viewtopic.php?t=3372107
Теперь, то что касается зарегистрированных пользователей:
Отключаем неизпользуемые модули, стараемся избегать модулей referencies, ralations, fields collection, если это возможно. Запросы с join'
1. Установить на сервер APC или eAccelerator, Xcache, чтобы кешировать php-код. Модуль для друпала так и называется APC, модуль позволяет кешировать данные о сайте и загрузке в оперативной памяти с помощью APC. Понятно о чем это я будет если почитать readme к модулю Memcache.
2. Установить на сервер Memcache и установить модуль memcache api на сайт.
3. Боремся с модулем Views если он есть, в нем тоже включаем кеширование. Можно поставить по времени для всяких блоков новостей и статей, например на час хранение кеша. Если делать чтобы сразу кеш сбрасывался когда новая новость появляется нужно поставить модуль Cache actions
http://drupal.org/project/cache_actions
Нужно добавить Rule обновить кеш view на создание, редактирование, удаление ноды нужного нам типа материала.
4. Боремся с кешированием блока. Отключаем модуль fields permission если он есть. Потому что (или content permissions не помню точно) он блокирует возмоность кешировать блоки, а это плохо.
5. Отключаем модуль php filter и выносим все блоки с php кодом в отдельный модуль. Да и в целом все блоки кастомные выносим в модуль.
6. Если seo не сильно нужно, то используем ajax для загрузки блоков. Можно использовать модуль ajaxify block или подобный для загрузки блоков и регионов через ajax.
7. Ужимаем все наши css, javascript. Css Advanced CSS/JS Aggregation
http://drupal.org/project/advagg
Css у меня сжимался нормально, а вот js выдавал ошибку.
8. Теперь нужно разбираться с блоками которые индивидуальные для каждого пользователя.
http://drupal.org/project/views_puc
http://drupal.org/project/authcache - для 6ки
http://drupal.org/project/easy_authcache - для 6ки, но не пробовал его
На семерку еще не сталкивался с модулями для пользовательского кеширования, хотя точно помню что на последних camp'ах рассказывалось что-то подобное. Модуль назывался то ли easy cache, то ли это и блы easy_authcache. Нужно смотреть последний кемп в Москве или Киеве.
Огромное спасибо,Иван, буду пробовать. Зарегистрированных на сайте не много, в основном это пользователи с ролью менеджера-владельцы страничек, они редко обновляют свой контент, в основном делаю за них это я. А анонимных пользователей больше, потому настроила Boost. С Varnish + Pressflow буду разбираться, с зарегистрированными пользователями думаю тоже скоро надо будет, когда их активность на сайте будет существенной, еще раз спасибо за советы!
привет