Как оптимизировать WordPress сайт: W3 Total Cache

wordpress logo

Оптимизация сайтов на WordPress является ключевым фактором влияющих на посетителей сайта, так и на продвижение сайта в поисковых системах. Скорость загрузки страниц напрямую влияет на поведение посетителей: медленные сайты чаще покидают, они занимают более низкие позиции в поисковых системах. Важную роль в работе сайта играет и выбор хостинга, но покупка быстрого хостинга на NVMe/SSD дисках не гарантирует автоматически высокой скорости работы вашего WordPress-сайта.
Оптимизацию работы сайтов на WordPress мы уже рассматривали в статье «Как ускорить сайт на WordPress«, где, в частности, упоминалось кэширование, которое является одной из самых эффективных техник оптимизации. Кэширование позволяет избежать лишних запросов к базе данных и значительно сократить время ответа сервера. Для реализации кэширования могут применяться как внутренние механизмы, так и внешние решения.
Не менее важна оптимизация фронтенда — уменьшение размера и количества ресурсов, которые загружает браузер. Сжатие изображений, минимизация CSS и JavaScript, а также использование современных форматов данных позволяют уменьшить общий размер страницы и значительно ускорить скорость отображения сайта. Дополнительно применяется CDN, например Cloudflare, что помогает доставлять контент пользователям с ближайших серверов.

 W3 Total Cache что это ?

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

Основная идея плагина заключается в том, чтобы уменьшить нагрузку на сервер и сократить время обработки запросов. Это достигается с помощью кэширования страниц, базы данных и объектов, а также оптимизации статических ресурсов. Например, плагин может сохранять готовые HTML-версии страниц и выдавать их пользователям без повторной обработки PHP, что существенно ускоряет работу сайта. Кроме того, он позволяет минимизировать и объединять CSS- и JavaScript-файлы, что уменьшает количество запросов к серверу.

Еще одним важным преимуществом является поддержка CDN (Content Delivery Network), что позволяет распределять контент через глобальную сеть серверов и обеспечивать быструю загрузку сайта независимо от географического положения пользователя. В то же время стоит отметить, что из-за большого количества настроек плагин может показаться сложным для новичков, а неправильная конфигурация иногда приводит к обратному эффекту. Ознакомиться с полным набором возможностей, которые предоставляет плагин, вы можете на официальной странице W3 Total Cache.

Тестирование сайта

Прежде чем приступить к установке необходимых компонентов и оптимизации, давайте протестируем сайт, чтобы оценить скорость работы без каких-либо улучшений. После выполнения базовой оптимизации проведем повторный тест. Это позволит наглядно сравнить результаты и определить эффект изменений. Отметим, что тестовый сайт размещен на виртуальном хостинге с NVMe/SSD накопителями.

Условия тестирования:

Тестирование будет проводиться с помощью утилиты Apache Benchmark, которая будет генерировать 10 одновременных запросов к сайту. Тест будет продолжаться до тех пор, пока общее количество обработанных запросов не достигнет 1000.

Пример команды: ab -c 10 -n 1000 https://domain.com.ua/wp/

Результаты теста:

Server Software:       Apache
Server Hostname:       domain.com.ua
Server Port:           443
SSL/TLS Protocol:      TLSv1.3,TLS_AES_256_GCM_SHA384,2048,256
Server Temp Key:       X25519 253 bits
TLS Server Name:       domain.com.ua

Document Path:         /wp/
Document Length:       84330 bytes

Concurrency Level:     10
Time taken for tests:  40.458 seconds
Complete requests:     1000
Failed requests:       0
Total transferred:     84906000 bytes
HTML transferred:      84330000 bytes
Requests per second:   24.72 [#/sec] (mean)
Time per request:      404.579 [ms] (mean)
Time per request:      40.458 [ms] (mean, across all concurrent requests)
Transfer rate:         2049.44 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        2    5   6.9      3     101
Processing:   173  397  73.2    394     836
Waiting:      158  387  69.5    388     765
Total:        176  402  74.4    398     839

Продолжительность теста: 41 секунда.
Скорость обработки запросов: 24.72 запроса/секунду
Средняя время на запрос: 404 мс

Предварительная подготовка

Активируем PHP расширення

Фактически WordPress представляет собой набор PHP-скриптов, каждый из которых выполняет определённую задачу. Чтобы ускорить выполнение этих скриптов и обеспечить более быструю обработку данных, с которыми работает сайт, нам понадобятся некоторые PHP-расширения. К таким расширениям относятся APCu и OPCache. Кроме того, нам понадобится расширение Brotli, чтобы уменьшить размер страниц и ускорить их загрузку.

Активируйте PHP-расширения «apcu«, «opcache» и «brotli» для версии PHP, которую использует ваш сайт. На серверах с CloudLinux и панелью управления cPanel это делается через «Выбор версии PHP» / «Select PHP version» на странице «Расширения» / «Extensions».

Если вы пользуетесь услугами хостинга от компании «Домены и хостинг», вы можете ознакомиться со статьёй «Как подключить или отключить расширения PHP в cPanel?» для получения более подробных инструкций.

Устанавливаем плагин W3 Total Cache

1. В левой боковой панели WordPress нажмите «Плагины«, а затем «Добавить плагин«;
2. В центральной части, рядом с «Поиск плагинов«, введите «w3 total cache» и подождите некоторое время, пока WordPress ищет плагины, соответствующие вашему запросу;
3. Когда окно обновится, найдите плагин «W3 Total Cache» среди полученных результатов и нажмите на «Установить сейчас» рядом с ним;
4. Подождите некоторое время, пока WordPress устанавливает плагин.
5. Активируйте плагин, нажав на кнопку «Активировать«.

Настройка плагина W3 Total Cache

После установки плагина в левом вертикальном меню появится новый раздел под названием «Performance» — это и есть раздел, в котором настраивается плагин W3 Total Cache.

Нажмите на «Performance» в левом вертикальном меню, а затем перейдите в «General Settings«, чтобы открыть окно с базовыми настройками плагина.

Вы сразу увидите меню, представленное на рисунке ниже.

 

Каждый пункт этого меню перенаправляет в соответствующий раздел настроек в «General Settings«. Также здесь находятся две кнопки «Empty All Caches» («Очистить все кэши«); если нажать на стрелку «вниз» этой кнопки, появится опция «Empty OpCode cache» («Очистить OpCache«). Справа находится кнопка «Save Settings» («Сохранить настройки«), а при нажатии на стрелку «вниз» рядом с кнопкой появляется опция «Save Settings & Purge Caches» («Сохранить настройки и очистить кэши«).

Если вы внимательно сравните меню в «General Settings» с пунктами меню «Performance» в левой боковой панели, вы увидите, что часть из них имеет одинаковые названия. Несмотря на это, одинаковые пункты меню открывают разные настройки.

 

Опция «Предпросмотра»

Позволяет включить режим «предварительного просмотра» для тестирования работы сайта, изменяя настройки плагина до их фактического развертывания на сайте. Режим «предварительного просмотра» остается активным даже после развертывания настроек, пока вы не отключите эту опцию. Этот режим пригодится для тестирования работы сайта после изменения настроек плагина.

Активируем кэширование страниц

Включите кэширование, для этого:
Напротив «Page Cache» установите галочку рядом с «Enable«;
Напротив «Page Cache Method» в раскрывающемся меню выберите «Disk: Enhanced«.
Как показано на рисунке ниже:


Важно: этот тип кэша увеличивает количество файлов в вашем аккаунте, так как плагин создает статическую копию каждой страницы сайта. Объем используемого дискового пространства зависит от количества страниц на вашем сайте и объема каждой страницы.

Активируем «минификацию»

«Minify» или «Минификация» позволяет уменьшить размер файлов HTML, CSS и JS, удаляя из них пробелы и различные комментарии, но эта функция также может повредить ваш сайт. Настройте этот раздел следующим образом:
Minify: Установите галочку рядом с «Enable«;
Minify Mode: Auto
Minify Cache Method: Disk — в документации плагина указано, что нужно использовать именно этот метод кэширования
HTML Minifier: Minify (default)
JS Minifier: Jsmin (default)
CSS Minifier: Minify (default)

Важно: режим «Auto» может привести к сбоям в работе вашего сайта. В случае проблем с сайтом отключите минификацию, очистите кэш и проверьте работу сайта повторно. Если проблема исчезнет, активируйте минификацию, переключите режим на «Manual» и добавьте файлы или страницы, к которым минификация не должна применяться, перейдя на вкладку «Advanced Settings» и заполнив поля «Never minify the following pages», «Never minify the following JS files», «Never minify the following CSS files».

Включаем кэш операционного кода

Ранее мы включили PHP-расширение «opcache», поэтому этот тип кэша будет активирован автоматически (рядом с «Enable» стоит галочка, но эту опцию нельзя ни включить, ни выключить).
Раздел должен выглядеть следующим образом:


Убедитесь, что в поле рядом с «Opcode cache» установлено «Opcode: Zend Opcache».

Активируем кэш базы данных

Установите галочку напротив «Database Cache» рядом с «Enable»
В поле «Database Cache Method» выберите «Opcode: Alternative PHP Cache (APC/APCu)»

Активируем кэширование объектов

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

Для активации Object Cache:
Напротив «Object Cache» установите галочку рядом с «Enable»;
Напротив «Object Cache Method» в раскрывающемся меню выберите «Opcode: Alternative PHP Cache (APC/APCu)».

Активируем кеширование браузером

Эта опция «указывает» браузеру пользователя, посещающего ваш сайт, сохранять статические элементы сайта (изображения, CSS- и JS-файлы) на компьютере пользователя, а при повторном посещении сайта загружать эти статические элементы из кэша. Это значительно уменьшает количество запросов к сайту, объем данных, передаваемых от сайта к пользователю и т.д., что значительно сокращает время отображения страницы.

Активируйте опцию установив галочку напротив «Browser Cache«, рядом с «Enable«:

Раздел «Purge via WP Cron», «CDN», «Reverse Proxy»

Пропускаем, никаких изменений не вносим.

Раздел «User Experience»

Активируем опцию «Lazy Load Images»
Активируем опцию «Disable Emoji» если вы не используете Emoji. Эта опция отключит отображение Emoji.

Раздел «Licensing»

В поле «License» укажите номер вашей лицензии W3 Total Cache; если вы приобрели лицензию, это разблокирует «Премиум»-опции.

Раздел «Miscellaneous»

«Verify rewrite rules» — включите опцию.
«Enable File Locking» — оставьте выключеным.
«Optimize disk enhanced page and Minify disk caching for NFS» — оставьте выключеным.
«Fix document root path» — оставьте выключеным.
«Anonymously track usage to improve product quality» — оставьте выключеным т.к. активация этой опции немного замедлит ваш сайт.
«Debug mode» — должна быть всегда выключена, кроме случаев, кода вам необходимо диагностировать проблемы в работе сайта.

Базовые настройки W3 Total Cache завершено и теперь необходимо сохранить настройки нажав на кнопку «Save Settings».

Повторное тестирование.

В начале статьи мы уже провели тестирование сайта до внедрения оптимизаций. После внесения изменений проведем тот же тест. Это позволит сравнить результаты и оценить эффективность проведенной оптимизации.

Результаты теста после оптимизации:

Server Software:        Apache
Server Hostname:        domain.com.ua
Server Port:            443
SSL/TLS Protocol:       TLSv1.3,TLS_AES_256_GCM_SHA384,2048,256
Server Temp Key:        X25519 253 bits
TLS Server Name:        domain.com.ua

Document Path:          /wp/
Document Length:        82208 bytes

Concurrency Level:      10
Time taken for tests:   0.969 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      82585000 bytes
HTML transferred:       82208000 bytes
Requests per second:    1031.79 [#/sec] (mean)
Time per request:       9.692 [ms] (mean)
Time per request:       0.969 [ms] (mean, across all concurrent requests)
Transfer rate:          83213.56 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        2    4   2.2      3      25
Processing:     3    6   3.1      5      36
Waiting:        2    3   2.0      3      28
Total:          5   10   4.0      8      39

Как видно из сравнения результатов тестов, проведенных до и после базовой оптимизации, скорость работы сайта выросла примерно в 40 раз.
Продолжительность теста сократилась с 41 секунды до 1 секунды.
Скорость обработки запросов выросла с 24,72 запросов/секунду до 1031,79 запросов/секунду.
Среднее время обработки одного запроса сократилось с 404 мс до 9,7 мс.

Конечно, наши результаты могут существенно отличаться от результатов оптимизации вашего сайта, поскольку на конечный результат влияет множество факторов. Например, количество и тип установленных плагинов, сложность и настройки темы, а также объем и структура контента на страницах. Поэтому даже при применении одинаковых методик оптимизации ваш сайт может показывать другие показатели по сравнению с примерами, приведенными в статье, но стоит знать, что подобные техники оптимизации сайта необходимо использовать независимо от того, размещется ли сайт на NVMe/SSD хостинге, VPS или на выделенном сервере.

Прокрутить вверх