Тема оптимизации Wordpress сайтов с целью заставить их работать быстрее не нова.
Первое и самое главное здесь — включить кэш на стороне сервера. Также рекомендуется использовать CDN для кэширования при доставке контента. Разберем подробнее: что, где и как кэшировать.



Для примера установим чистый Wordpress на сервере отечественного хостера. Время генерации одной страницы со старта без каких-либо плагинов достигает полсекунды. Полная загрузка страницы у пользователя из Европы занимает около 1 сек., в США (запад) — 2.2 сек., в Австралии — 2.8 сек. Цифры получены следуя этой инструкции и на основе данных загрузки сайта из разных уголков мира с помощью сервиса Webpagetest.

Как видим, не слишком быстро для пустого движка. А значит есть повод для кэширования.

Кэширование на сервере


Слабым местом многих сайтов являются тяжеловесные запросы к базе данных MySQL. В Wordpress они зачастую генерируются установленными плагинами.

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

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

Идем дальше — кэширование в PHP. Во всех последних версиях начиная с 5.5 здесь по дефолту включено расширение OPcache. Таким образом, скомпилированный код автоматически сохраняется в памяти для максимально быстрого его исполнения.

Результатом работы упомянутых выше MySQL запросов и PHP скриптов является сгенирированный HTML код, который отдается пользователю в качестве веб-страницы. Если этот HTML временно (до внесения изменений в контент) сохранять на сервере и отдавать его пользователям без обращения к PHP и MySQL — время загрузки такой страницы будет наименьшим. По такому принципу работает большинство Wordpress плагинов кэширования. Они сохраняют уже сгенерированную HTML страницу как файл и отдают ее за сотые доли секунды.

Среди кэш-плагинов по числу установок лидирует бесплатный WP Super Cache. После его установки, включаем кэширование и жмем «Обновить»:



Работающий плагин добавляет в конце HTML кода закэшированых страниц информацию о времени их создания:

<!-- Cached page generated by WP-Super-Cache on 2021-02-24 17:51:50 -->

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

Подключение CDN для Wordpress


Помимо исполняемых на сервере PHP скриптов и MySQL запросов, движок Wordpress содержит и статические файлы: картинки, стили, шрифты, яваскрипты. Скорость загрузки таких файлов зависит от их размера и того, насколько географически далеко от них находится пользователь.

Касаемо размеров файлов, — за этим всегда нужно следить. Не стоит ждать от картинки в несколько мегабайт быстрой загрузки на мобильном интернете.

Для того, чтобы у пользователей из других стран и континентов ваши файлы грузились быстро, используйте CDN. Это cети доставки контента, которые хранят копии ваших файлов на кэширующих CDN-серверах в разных географических регионах. Запросив файл через CDN, пользователь максимально быстро получит его с ближайшего сервера.

Подключим CDN к своему сайту. Для этого зарегистрируемся на BunnyCDN и, указав лишь емейл, сразу получим на тест 1Тб бесплатного мирового трафика.

Затем в личном кабинете нужно создать Pull зону, выбрав для нее имя и указав адрес нашего сайта, откуда будут тянуться файлы для кэширования по всему миру:



Создав зону, в конце выбираем «Wordpress» и следуем короткой инструкции по включению плагина кэширования:



Результат


После включения плагина кэширования и подключения CDN скорость загрузки страницы сайта снизилась до полусекунды для Европы и почти до секунды для США и Австралии. Посетители, определенно, будут довольны, а просмотров станет больше.

Таким образом, в нашем примере чистый Wordpress без картинок пользователи по всему миру стали загружать в среднем в 2 раза быстрее. Для сайтов, нафаршированных картинками, стилями и яваскриптами, выгода будет еще существеннее.