Сравнение популярных решений для кэширования в WordPress
WordPress не выполняет кэширование по умолчанию, но обеспечивает мощный базовый API (или интерфейс) для его осуществления с помощью плагинов.
Наличие эффективно работающего решения для кэширования в WordPress крайне важно для обеспечения быстрой загрузки страниц. В этой статье рассматриваются несколько популярных плагинов (в том числе и Hyper Cache).
Обратите внимание, что я оцениваю только основные функциональные возможности кэширования – страниц, баз данных и объектов.
Опыт показывает, что загромождение плагина массой дополнительных возможностей приводит к уменьшению эффективности и затрудняет его использование. Я рекомендую найти отдельные, более специализированные плагины для систем CDN, сжатия файлов, минификации и так далее.
Все плагины тестировались на WordPress 4.4.2, nginx 1.9.9, PHP-FPM 5.5.9, MySQL 5.5.46, и Ubuntu 14.04.
Я оцениваю каждый плагин по следующим критериям:
Простота использования: насколько легко использовать и конфигурировать плагин среднестатистическому пользователю.
Упорядоченность всех средств в панели администрирования и отсутствие рекламы: страница с настройками плагина заполнена ссылками на посторонние сайты. Она содержит средства повышения продаж или объявления. Логично ли организована страница с настройками?
Кэширование страниц: представляет собой кэширование целых страниц, так что последующие запросы получают кэшированные версии (смотреть Hyper Cache настройка).
Кэширование объектов в оперативной памяти: насколько эффективно плагин осуществляет кэширование объектов в памяти. Кэширование объектов в памяти – это кэширование произвольных фрагментов данных для последующего использования.
Качество бесплатной поддержки: насколько эффективно обеспечивается бесплатная поддержка.
Очистка при удалении: насколько эффективно плагин выполняет очистку после себя. Многие плагины для кэширования добавляют или изменяют файлы системы WordPress. Это может вызвать проблемы, если не произвести правильную очистку.
Безопасность: насколько безопасна работа плагина.
W3 Total Cache
Простота использования: 2/10.
Отсутствие в панели администрирования беспорядка и средств раскрутки товаров: 2/10.
Кэширование страниц: 4/10.
Кэширование объектов в оперативной памяти: 8/10.
Качество бесплатной поддержки: 4/10.
Очистка при удалении: 3/5.
Безопасность: 9/10.
Итого: 4.9/10.
W3 Total Cache предлагает поддержку CDN, интеграцию с сервисами Varnish, Google Page Speed, минификацию, мониторинг сайта с помощью New Relic и так далее. Существует множество опций, 99% из которых бесполезны для большинства пользователей. Это усложняет использование плагина.
Панель администрирования загромождена рекламой (плагин Hyper Cache намного «чище»).
Согласно моим тестам, кэширование на диск и Memcached после кэширования оставляют запущенным MySQL. Это либо ошибки, либо плохо реализованная функциональность. После того, как я запустил кэширование объектов, запросы MySQL больше не выполнялись.
После удаления плагина все файлы кэша остались в папке wp-content. Плагин очистил важные функциональные файлы.
Проверка плагина показала достаточное использование методов безопасности на уровне кода. Например, экранирование, одноразовые коды, проверка прав доступа и санитизация. Этот плагин безопасен для запуска на сайте и не сделает вас уязвимым для хакеров.
WP Super Cache
Простота использования: 7/10.
Отсутствие в панели администрирования беспорядка и средств раскрутки товаров: 8/10.
Кэширование страниц: 9/10.
Кэширование объектов в оперативной памяти: 0/10.
Качество бесплатной поддержки: 6/10.
Очистка при удалении: 5/5.
Безопасность: 9/10 (почти как Hyper Cache WordPress).
Итого: 6.7/10.
WP Super Cache отличается простотой, обеспечивая при этом стандартную функциональность. Мне очень нравятся его вкладки «Просто» (Easy) и «Дополнительно» (Advanced). Помимо основного кэширования он поддерживает CDN и ряд дополнительных возможностей.
Панель администрирования плагина прозрачна, без лишних деталей. Рекламы нет. Кэширование статических файлов подкачки работает отлично по умолчанию. MySQL запросы не запускались в моих тестах кэширования страниц. С другой стороны, кэширование объектов в памяти не поддерживается плагином вообще. Это огромный недостаток, поскольку API кэширования объектов позволяет сохранять сложные запросы и использовать кэши, такие как Memcached.
Авторы плагина (Automattic) отвечают на вопросы в темах форума поддержки WordPress.org.
Плагин хорошо написан. Очевидных уязвимых мест нет. Удаление плагина сопровождается очисткой необходимых файлов.
WP Fastest Cache
Простота использования: 5/10.
Отсутствие в панели администрирования беспорядка и средств раскрутки товаров: 0/10.
Кэширование страниц: 7/10.
Кэширование объектов в оперативной памяти: 0/10.
Качество бесплатной поддержки: 8/10.
Очистка при удалении: 5/5.
Безопасность: 0/10 (как и плагин Hyper Cache).
Итого: 3.8/10.
WP Fastest Cache легко использовать. Все основные функции кэширования присутствуют.
Плагин заполнен рекламой. Примерно половина возможностей требует платной лицензии. Тем не менее, функция базового кэширования предоставляется бесплатно.
При запуске кэширования сразу возникает PHP предупреждение. Не совсем ясно, какой тип кэширования запускается.
Плагин выполняет кэширование страниц на диске. Опция должна быть прочитана в базе данных до того, как может произойти статический вывод. Кэширование объектов в памяти не поддерживается.
Автор модуля отвечает в темах форума поддержки WordPress.org. Плагин корректно использует одноразовые коды. Но есть проблемы с санитизацией данных. Этот плагин не до конца безопасен для использования. Удаление плагина очищает все необходимые файлы.
Hyper Cache
Простота использования: 4/10.
Отсутствие в панели администрирования беспорядка и рекламы: 5/10.
Кэширование страниц: 7/10.
Кэширование объектов в оперативной памяти: 0/10.
Качество бесплатной поддержки: 3/10.
Очистка при удалении: 3/5.
Безопасность: 0/10.
Итого: 3.3/10.
Hyper Cache приводит в замешательство при использовании. Нет опции, чтобы разрешить кэширование. Вместо этого необходимо нажать на кнопку «Сохранить» на странице настроек, не изменяя ничего. Первая опция, показанная на странице настроек, это «Отключить переводы» (Disable Translations), которая не является важной.
В панели администрирования нет рекламы.
Изначально непонятно, какой тип кэширования реализует плагин. После тестирования я выяснил, что он выполняет страничное кэширование на диск. Запросы MySQL не выполнялись, когда обрабатывалась кэшированная страница. К сожалению, кэширования объектов в памяти нет.
Что касается поддержки, то автор неактивно отвечает в темах поддержки. Плагин имеет серьезные проблемы с санитизацией и создает угрозу безопасности при установке.
Удаление настроек Hyper Cache WordPress очищает важные функциональные файлы, но не должным образом.
Comet Cache
Простота использования: 4/10.
Отсутствие в панели администрирования беспорядка и рекламы: 2/10.
Кэширование страниц: 7/10.
Кэширование объектов в оперативной памяти: 0/10.
Качество бесплатной поддержки: 7/10.
Очистка при удалении: 4/5.
Безопасность: 0/10.
Итого: 3.7/10.
В Comet Cache понятно, как включить кэширование. Это огромный плюс. Включение кэширования выдало об ошибке в обновлении конфигурации nginx. Но после просмотра настроек обнаружилось, что они не важны для базового кэширования. Плагин имеет большое количество полезных подсказок. Он не совместим с PHP 5.2, а соответственно, и со всеми версиями WordPress.
Панель администрирования загромождена рекламой. Такая перегруженность затрудняет навигацию. Этого недостатка лишен плагин Hyper Cache.
Также нет 100% ясности, какой тип кэширования реализован. После тестирования я выяснил, что плагин выполняет страничное кэширование на основе файлов. Запросы MySQL не выполнялись, когда обрабатывалась кэшированная страница. Кэширования объектов в памяти, к сожалению нет.
Что касается поддержки, авторы плагина активно участвуют в общении на форумах поддержки. Также есть люди, добровольно предлагающие помощь другим пользователям.
Плагин должным образом очищает и экранирует данные. Однако он делает слегка «пугающие» операции с прямыми запросами к базе данных.
Comet Cache предлагает на выбор несколько вариантов деинсталляции. Можно удалить только плагин или удалить и плагин, и все его данные.
Рекомендация
Если вам нужна простота в использовании кэширования, которое «просто работает», то WP Super Cache – для вас. Этот плагин обеспечивает страничное кэширование, которое позволит существенно ускорить подавляющее большинство сайтов. Сообщество поддержки динамично, а плагин находится в хорошем состоянии.
Если вам необходимо кэширование объектов в памяти, устанавливайте плагины Memcached и Batcache. Оба этих плагина требуют ручного перемещения файлов в папку wp-content. Ни тот, ни другой не имеют страниц настроек, поскольку являются автоматически конфигурируемыми. Если что-нибудь проще, я рекомендую W3 Total Cache (но не Hyper Cache).
Дополнение: Многие порекомендовали мне рассмотреть WP Rocket, являющийся платным плагином страничного кэширования на основе файлов. В целом, WP Rocket – это отличный плагин. Он хорошо написан и «просто работает». Но плагин не бесплатный и предлагает только страничное кэширование на основе файлов. Он не поддерживает кэширование объектов. Кроме этого я считаю, что интерфейс плагина мог бы быть немного проще.
Я написал собственный плагин под названием Simple Cache. Он предлагает страничное кэширование на основе файлов. Плагин имеет только один параметр «включить» или «выключить», пока вы не активируете расширенный режим. Этот режим позволяет выполнять кэширование объектов и страничное кэширование в памяти. Плагин написан надежно и максимально эффективен.