Wordpress Cache

02 January 2010 #wordpress

Производительность веб-сервера резко падает при использовании динамических страниц, и часто наблюдается так называемый digg-эффект, который заключается в отказе обслуживания от перегрузки сервера. Именно поэтому в WordPress применяются плагины, реализующие различные способы кэширования информации.

Существует два способа кэширования: во-первых, это кэширование запросов базы данных и объектов и во-вторых, это кэширование всей страницы. У каждого метода есть свои достоинства и недостатки и каждый метод имеет право на жизнь.

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

Второй способ фактически генерирует статически страницы, которые в дальнейшем отдаются пользователю. Для примера: в скринкасте про Rails приводился пример производительности веб-сервера Mongrel (динамические страницы) и Apache (статические страницы), так вот в случае Mongrel максимальная производительность соответствует порядка 20-50 запросам в секунду, в то время, как Apache позволяет обработать уже свыше 1000 запросов в секунду. Разница просто колоссальная!

Как реализовать статические страницы в WordPress?? Конечно с помощью плагинов.

  1. WP Super Cache — в некоторых сборках поставляется по умолчанию, позволяет генерировать статические страницы и отдавать их пользователю без обращения к PHP.
  2. Hyper Cache — более простая реализация кэширования.
  3. W3 Total Cache — новое слово в кэшировании. Поддерживает сжатие скриптов, CSS, кэш для базы данных, работу с CDN и многое другое.
  4. MaxSite Cache — отечественная разработка, при этом платная. По словам автора является лидером среди кэширующих плагинов.

Владимир проводил тестирование данных плагинов и выложил их на своем блоге blog.sjinks.pro. Он показал себя как человека, очень хорошо разбирающимся в PHP, но результаты тестов очень сомнительны. Сомнительны потому, что в коментах возникло обсуждение эффективности данных плагинов между Владимиром и Максом, автором MaxSite Cache. Оба указывали на использование PHP в плагине WP Super Cache и MaxSite Cache, Макс почему то упорно твердил, что Super Cache в любом случае использует скрипты при обращении к странице, а его скрипт генерирует настоящие статически страницы.

При этом он почему то не учитывает того факта, что Super Cache так же генерирует статические страницы и хранит их на диске, а при обращении к сайту происходит отдача именно статической страницы в обход PHP. О чем указывается на офстранице плагина WP Super Cache. При этом, там же приведены примеры сайтов, которые пережили digg-эффект как раз за счет данного плагина.

Но наибольший интерес представляет плагин Realy Static, который позволяет как Movable Type создать статическую копию сайта WordPress, с возможностью использования динамических функций блога, таких как оставления комментариев. Установка и настройка данного плагина пока еще не тривиальная, мне пришлось несколько часов убить, для того, чтобы тестовый сайт нормально конвертировать в статический. В итоге добился результата и коменты прекрасно добавлялись. Однако тут же выяснилось, что плагин имеет недостатки. Которые проявляются в том, что если оставлять комментарий, обновляется только одна статическая страница, страница самой записи, все остальные страницы, которые ссылаются на нее, не изменяются и будут показывать то количество комментариев, которое было до публикации. А обновлять все страницы блога каждый день руками – это не выход из положения. Надеюсь, автор плагина исправит это в ближайшее будущее.

Если сравнивать по производительности, а я могу сравнивать только время отдачи страницы сервером, то после публикации и использования статических страниц, скорость отдачи страницы клиенту возрастает в два раза. Какую максимальную нагрузку будет держать сервер при использовании данного плагина можно только предполагать, но судя по всему, это будет нечто!