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. Він пропонує сторінкове кешування на основі файлів. Плагін має тільки один параметр «ввімкнути» чи «вимкнути», поки ви не активуєте розширений режим. Цей режим дозволяє виконувати кешування об’єктів і сторінкове кешування пам’яті. Плагін написаний надійно і максимально ефективний.

Переклад статті «Comparison of Popular WordPress Caching Solutions» був підготовлений дружною командою проекту Сайтостроение від А до Я.