Но дьявол, как обычно, кроется в деталях. В интернете есть самые разные обзоры и сравнения плагинов кеширования. И за столько лет кто-то же должен был выдать идеальный рецепт? Но нет. Все эти обзоры сводятся к тезису: «мы сделали 10 одинаковых сайтов, установили плагины с дефолтными настройками и смотрим, где страница загрузилась быстрее». При этом все забывают, что нюансов при оптимизации кеширования вагон и маленькая тележка. Похоже, эта статья первая, которая примет во внимание реальное поведение пользователей на сайте, вместо сравнения скорости загрузки одной страницы в тепличных условиях.
Используя бестселлеры с Themeforest или, те же конструкторы, вроде Elementor, WP Backery и прочие, сайт обречен на 5-15 секунд TTFB (time for first byte, время ответа сайта) при загрузке КАЖДОЙ страницы. С одной страницы может быть несколько сотен обращений к базе данных, выполняться большое число php-функций, подключаться множество библиотек. Естественно, что такая скорость недопустима, она влечет за собой понижение в поисковой выдаче, «отказы» посетителей, сливы бюджетов на рекламу и так далее. С этим нужно что-то делать.
Я никогда шибко оптимизацией WordPress не заморачивался, потому что в моей практике сайты, которые требуют космической скорости работы, делали не на WordPress, а на Yii2 или Laravel. Для WP я использовал околодефолтные настройки плагина WP Super Cache, подсмотренные на Stackoverflow. Правда со временем начали появляться проблемы. Что-то приходилось «колхозить», где-то пробовать другие плагины. Но каждый раз появлялись всё новые и новые «косяки».
В какой-то момент я просто устал от постоянного «колхозинга» и решил найти идеальное решение. Я занимался этим больше месяца, тестируя разные плагины, разные настройки на разных сайтах, чтобы найти идеальный рецепт.
В статье речь пойдёт о собственных наблюдениях, об особенностях каждого плагина для кеширования WordPress, о том, что заявлено, а что имеем по факту, и конечно, подборе идеальных настроек и устранении проблем. Материала получилось много, на 21 страницу, поэтому я решил разделить его на две части. Первая будет посвящена обзору и выводам, так сказать «для гуманитариев». Во второй части будут приведены настройки и доработки плагинов, а также более подробное пояснение их работы, так сказать «для технарей».
Забегая вперед, скажу, что идеального рецепта (идеальных настроек) не существует. В первую очередь необходимо четко сформулировать свои требования к функционалу и понять принципы работы того или иного плагина. Этим мы сегодня и займемся.
Определяем требования к функционалу
Как я уже говорил выше, идеального рецепта не существует, и необходимо разобраться в логике работы того или иного плагина и выбрать наиболее подходящее решение для каждого конкретного сайта. Во второй части статьи я подробнее рассматриваю популярные плагины для кеширования WordPress, их проблемы и предлагаю методы решения этих проблем. Здесь я обобщу все плюсы и минусы каждого из плагинов.
При рассмотрении плагинов ниже будут применяться следующие обозначения:
WP Super Cache
В ходе своего исследования я также успел поработать с WP Rocket и LiteSpeed Cache, в которых разочаровался почти сразу и не посчитал нужным расписывать подробно все их преимущества и недостатки, их я упоминаю во второй части статьи.
Заключение
Без сомнения, наиболее высокую скорость загрузки показал плагин W3 Total Cache. Он работает быстро и в классическом режиме, и в режиме PHP, да и страницы с GET‑параметрами загружает быстрее всех. Но для меня критичной стала проблема отсутствия автоматического фонового кеширования, которое бы обновляло файлы кеша, не снося их полностью, а заменяя постепенно.
Плагин, конечно, не требует доработок, и имеет все необходимые настройки, но в период обновления кеша, пользователи, попадающие на сайт, видят медленную загрузку, а при большом трафике на сайте это становится критичной проблемой. Его лучше использовать на статичных сайтах без автокеширования.
Большие надежды я возлагал на Swift Perfomance. Он имеет все необходимые настройки, не требует доработок, да и распространяется платно, а ведь платный плагин должен оправдывать вкладываемые в него средства? Но он разочаровал полностью, нестабильные механизмы автокеширования, недоработанный механизм ручного обновления кеша, высокая нагрузка на сервер при кешировании – все эти недостатки свели на нет его преимущества. Если бы я регулярно не мониторил его работу, может быть и не заметил бы этих недостатков. На текущий момент я его не использую ни на одном из проектов.
WP Super Cache был бы идеальным вариантом, если только на сайты с ним не вести рекламу. Как только на сайте появляются любые GET-параметры, необходимо дорабатывать исходный код плагина, чтобы устранить эту проблему. А при частом обновлении сайта с большим количеством страниц это становится настоящим геморроем, ведь если мы не хотим, чтобы некоторая часть пользователей с рекламы видела медленную загрузку после проведения автокеширования, то необходимо придумывать дополнительные методы обхода страниц с GET-параметрами. Чаще проще установить плагин, который всё это умеет из коробки. К недостаткам WP Super Cache можно также отнести отсутствие работы с оптимизацией контента на сайте (минификация HTML/CSS/JS, объединение CSS и JS-файлов, Lazy loading изображений, а также оптимизация и сжатие изображений), но это на любителя, плагин кеширования по факту не должен этим заниматься, все эти настройки нужно тестить, у других плагинов не все они работают адекватно.
Закрывает эти проблемы плагин WP Fastest Cache, который прекрасно умеет работать с GET-параметрами. Хотя он всё равно требует доработок. Лично мне не сложно внести небольшие изменения в код плагина, чтобы познакомить его с метками типа yclid и разрешить использовать PHP.
Вот и получается, что идеального рецепта не существует. Понимая проблемы плагинов и разобравшись в настройках из второй части статьи, каждый сам сможет подобрать себе плагин под конкретный тип сайта.
Рекомендации
Подробные настройки каждого плагина и инструкции по доработке исходного кода я выложу во второй части статьи.
Это переписанная и структурированная статья из моего телеграм-канала «digital на минималках», где я делюсь опытом в бизнесе, инструкциями, рассказываю, как удешевить свои вложения в digital, рассуждаю на небанальные темы, немного бомблю и делюсь мемчиками (осторожно, нецензурная речь). Решил, что подобное объемное исследование будет интересно не только подписчикам моего канала.
Всегда, когда мы говорим о производительности в WordPress, то знаем, что механизмы кэширования помогают сэкономить время выполнения сервера и сократить общее время загрузки страницы.
Плагин WP Super Cache создает статические страницы вашего сайта. Это сокращает время обслуживания страницы, а также выполняет меньшее количество вызовов PHP. Таким образом, когда запрашивается пост, посетителю будет выдана созданная ранее его копия.
Без кэширования вашей страницы время загрузки значительно увеличится. Наличие механизма кэширования в WordPress (особенно если использовать виртуальный хостинг) крайне важно для быстрой работы сайта.
Как работает?
Плагин создает обычные файлы с расширениями, в которых содержатся копии страниц сайта. Они сохраняются в каталоге
Если пользователь откроет какую-либо страницу, то она отдается из указанной папки. Это экономит ресурсы сервера, так как не нужно снова ее генерировать, исполняя скрипты и дополнительные запросы в базу данных. В итоге пользователь скорее получить ее содержимое.
Установка
Активация кеширования
Активация кеширования в плагине WP Super Cache
Для проверки работы воспользуйтесь кнопкой Проверить. Плагин создаст 2 запроса и сравнит отметки времени обеих страниц. Если они совпадают, значит кеширование работает нормально.
Проверка кеширования в плагине WP Super Cache
Настройка
Настройка плагина WP Super Cache
Включив кеширование, как описано раньше, вы задействовали стандартные настройки. Но WP Super Cache — это мощный плагин, который поставляется с множеством опций. Он может ощутимо повысить скорость работы сайта, благодаря дополнительным опциям.
Вкладка Расширенные на странице настроек плагина WP Super Cache
Рассмотрим детально самые важные опции.
Статус кеширования. Настройка должна быть включена.
Метод доставки кеша. С первой опцией кеш будет использовать средства PHP. Рекомендовано если используются отдельные темы для просмотра на мобильных. В режиме Эксперт задействуется — модуль для веб-сервера Apache. Он занимается тем, что преобразует URL-ссылки на сайте. Этот вариант доставки считается самым быстрым.
В блоке содержатся ряд настроек, которые отвечают за кеширование отдельных страниц, для отдельных пользователей, сжатие файлов кеша.
В этом разделе можно выбрать параметры поддержки кеширования для мобильных устройств, способов очистки и сверки кеша и др.
Настройка очистки просроченного кеша в плагине WP Super Cache
Настройка Таймаут кэширования задает время “жизни” кеша в сек. Зависит от частоты обновления контента. Чем реже, тем большее время. Начать можно с 3600 сек. (24 ч.)
Планировщик позволяет с заданным интервалом автоматически проверять устаревший кеш. Это время тоже зависит от частоты изменения содержимого страниц.
Все остальные настройки менее важны, поэтому их значения можно оставить по умолчанию.
Раздел актуален для поисковых систем, для которых важна скорость загрузки страниц сайта. По умолчанию плагин кеширует только посещенные страницы. Но как быть с остальными? Ведь поисковый бот просматривает все страницы сайта и оценивает скорость их загрузки.