Настройки плагина
Рассмотрим общие настройки (находится в панели слева с заголовком Performance) – General Settings. Первое, что вы увидите на вкладке General, это Preview Mode, в переводе на русский означает режим просмотра. Включите эту функцию (кнопка Enable) если только вы, хозяин сайта, желаете увидеть работу плагина. Если же он должен работать для всех – оставьте его выключенным. Не забудьте после настроек нажать кнопку сохранить (Save).
Следующий – Page Cache, что означает кэш страницы. С помощью этой функции вы активируете кеш страниц.
Minify (минимизация). Означает ускорение загрузки сайта путём минимизации файлов css js и html. Отметьте галочки, как показано на скриншоте. И кликните на кнопку сохранить.
Database Cache (кэш базы данных). Из названия уже становится понятно, что происходит кэширование базы данных, что сокращает загрузку страниц. Используем метод кеширования – диск. И, конечно же, кнопка сохранить (save).
Object Cache (объект кэша). Также как на предыдущем этапе, устанавливаете галочку к функции включить (enabled). Метод кэширования тот же. Нажимаем кнопочку save. Эта функция нужна в том случае, если вы используете выделенный сервер.
Browser Cache (кэш браузера). Наверное, главная функция. Здесь происходит активация кеша браузера. Ваши страницы будут загружаться ещё быстрее. Раньше уже было сказано, к чему это может привести в хорошем смысле.
CDN (сеть доставки контента). В выпадающем списке CDN Type вы сможет выбрать ближайшего провайдера. Если вам неизвестна эта функция, можете его пропустить.
Reverse Proxy (обратный прокси-сервер). Он также кэширует страницы сайта. Можно не включать эту функцию.
Monitoring (мониторинг). Уже из названия понятно, что вас ждёт. Наблюдение за статистикой. Если вам неизвестно, что означает функция New Relic, то не используйте этот раздел.
Miscellaneous (разное). В этом разделе оставьте галочки на тех местах, где они расположены и ничего больше не меняйте.
Debug (отладка). Эту опцию лучше не трогать. По умолчанию никаких галочек не стоит. Поэтому лучше оставить, всё как есть.
Import/Export Settings (настройки импорта/экспорта). Вы сможете импортировать и экспортировать резервную копию плагина на другой свой сайт. Это удобно, после того, как на одном из ваших сайтов сделаны настройки, что заняло не меньше часа времени. Столько же терять на другом? Для этого разработчики и придумали такую функцию.
После основных настроек (General) можно перейти на расширенные параметры кеша страниц – вкладку Page Cache.
В категории General устанавливаем галочки везде, кроме 404 страницы и URL. Отмечаем то, что будем кэшировать.
В Cache Preload вы указываете время, или оставляете то, которое уже есть для обновления кэша.
В Advanced сколько времени будет жить ваши страницы сайта в кэше. Можете оставить все, как есть.
В Purge Policy оставляете, как показано на скриншоте. Она означает, какие страницы копии будут созданы в кэше.
Категория Minify. Вы помните, что она отвечает за минимизацию страниц. Помимо того, что в основных настройках мы не отметили галочкой ничего, а оставили, всё как есть, то здесь нужно структуру URL перезаписывать. А для этого поставить галочку в верхней строке.
Далее настройки HTML & XML. Отмечаем галочки, как на скриншоте.
Настройка блока. Он нужен, для того, чтобы добавить файлы скриптов и создать кэширование для них. Аналогичная ситуация и со стилями CSS.
Advanced предназначен для того, чтобы выбрать то время, которое удобно вам для обновления файлов. В общем, оставляете, всё как есть.
Категория Database Cache. Всё просто, как дважды два. Как рекомендуют, так и делаем.
Ещё один Advanced. Означает, сколько времени будет существовать копия кэша. Оставляйте настройки, как на скриншоте.
Категория Object Cache по умолчанию, как в основных настройках.
Browser Cache в разделе General указываем галочки везде, кроме страницы 404. Это кэш браузера и 404 страница совсем не нужна для сохранения. Остальное оставляем, как есть.
Вот теперь настройки готовы. Можно приступать к работе. А точнее, плагин W3 total cache оптимизирует работу вашего сайта.
Object Cache
While Page Caching can greatly help to reduce the response time of a site through caching static pages, there are still many non-cached requests for Objects. Object Caching will further improve performance by caching these Objects.
The idea of an Object Cache is that the WordPress Core, themes, and plugins may store some data that is frequently accessed and rarely changed in an object store. This is so these objects will not have to be retrieved and processed on each request. Ultimately, Object Caching will reduce the total number of database queries required for each page, and because the CPU does not have to rebuild these blocks of data your response time will decrease.
Как использовать W3 Total Cache?
После установки и активации плагина, на боковой панели админки вы найдете новый пункт — «Performance» (Производительность). Кликнув по нему, вы увидите различные инструменты плагина, с помощью которых вы можете ускорить свой сайт.
1. Вкладка General Settings — общие настройки
Как можно понять из названия, это общие настройки. К примеру, здесь вы можете настроить кеш страницы, минификацию, оптимизацию баз данных. Но затем, перейдя в главном меню плагина к этим пунктам, вы сможете увидеть продвинутые настройки, которые не отображаются в вкладке General Settings.
Первый пункт в общих настройках — Preview Mode — Режим предварительного просмотра. Включив этот режим, вебмастер сможет протестировать любые настройки плагина, просмотреть их, но при этом, эти изменения не коснутся обычных посетителей сайта.
Для того, чтобы применить настройки, нужно кликнуть на Deploy.
Page Cache – Enable (Включить). Это самая важная особенность W3 Total Cache. Только кеширование страницы значительно повысит производительность вашего сайта.
Также выберите опцию Disk: Enhanced, которая должна быть по умолчанию:
Minify (минификация) — Включить. Сжимает код HTML, JavaScript, CSS, без потери его функциональности. Если вы используете CDN, такой как CloudFlare, то нет смысла включать эту опцию, поскольку CloudFlare также поддерживает эту опцию. Но если вы не используете CDN, то включите опцию.
Database Cache (Кэш базы данных) — Не включать. В вашей базе данных хранятся все фактические данные для ваших постов, страниц, и всего остального. Кэш базы данных может повысить производительность вашей базы данных и сократить время, необходимое для создания сообщений, страниц и RSS-каналов.
Но если вы пользуетесь виртуальным хостингом, кэширование базы данных может на самом деле замедлить работу вашего сайта, перенеся слишком много работы на процессор вашего сервера.
Поэтому, если вы используете бюджетный хостинг, я рекомендую отключить кэш базы данных. Если у вас есть выделенный сервер или VPS, вы можете включить его.
Object Cache. Это ещё одно кеширования. Но, оно может работать хорошо, а может и нет. Поэтому, вначале включите эту опцию и проверьте, стала страница загружаться быстрее или нет. Если разницы нет, то отключите эту опцию. Вторую настройку, Object Cache Method, оставьте по умолчанию — Disk.
Browser Cache – Enable (Включить). Эта настройка включает кеширование сайта в браузере посетителя. Таким образом, когда он повторно зайдет на ваш сайт, то часть сайта будет загружена непосредственно с его устройства.
CDN — Disable. Если вы не планируете использовать CDN, то вы должны отключить эту опцию. Но если вы будете использовать CDN CloudFlare, то вы также должны отключить эту опцию, поскольку CloudFlare подключается другим способом.
Сохраните все изменения.
2. Вкладка Page Cache
General
В разделе General убедитесь, что вы отметили эти поля, чтобы включить их:
- Cache front page
- Cache feeds
- Cache SSL Включите эту опцию, если на вашем сайте включен протокол SSL.
- Don’t cache pages for logged in users
Cache Preload
Заполните этот раздел, следуя этим настройкам:
- Automatically prime the page cache: Отмечено
- Update interval: 900 seconds
- Pages per interval: 10
- Sitemap URL: фактическая ссылка на карту сайта, если она у вас есть. Обычно это — «yourdomain.com/sitemap.xml».
- Preload the post cache upon publish events: Отмечено
Вкладка Minify
Включите параметры, как показано на скриншотах ниже для General, HTML, JS (JavaScript) и CSS. Включение этих опций минимизирует файлы HTML, JavaScript и CSS, которые загружаются при просмотре пользователем вашего сайта.
Остальные значения оставьте по умолчанию.
Browser Cache
Кеш браузера важен. Вам следует выставить параметры Browser Cache в соответствии с приведенными ниже скриншотами. И не забудьте нажать кнопку «Сохранить все настройки».
Остальные настройки вы можете оставить по умолчанию.
Opcode Cache
Opcode Caching improves PHP performance by storing precompiled script bytecode in shared memory, thereby removing the need for PHP to load and parse scripts on each request. It is always a good idea to have Opcode Caching enabled as this functionality cannot be disabled, though when enabled it will report the actual state and (in the Pro version) statistics.
In production environments, you may have slightly better performance by disabling the “Validate timestamps” option under General Settings > Opcode Cache.
When this option is disabled, cached files will not be recompiled on PHP file updates, such as when the file modification time changes, and will only be recompiled on PHP restart.
Почему WP Rocket?
В сети существует достаточно много статей, где сравнивается WP Rocket с другими плагинами кэширования, и в которых он показывает едва ли не лучшие среди всех результаты по итогам тестов.
И кстати, он не бесплатный. Годовая лицензия стоит $39 для одного сайта, а продлить лицензию до периода её истечения можно по специальной цене $19.50. Если не продлите, кэширование все равно будет работать, просто Вы не сможете обновиться до более новой версии.
Дорого? Может быть… Но не стоит забывать, что в разработке WP Rocket участвует целая команда профессионалов (он относится к разряду премиум продуктов), и 24 часа в сутки Вы получаете оперативную помощь и консультацию. Проверено лично — техподдержка охотно идет на контакт и всегда на позитиве
WP Rocket
Если W3 Total Cache оказывается сложно настроить, возможно, вам нужен менее сложный плагин кеширования WordPress. Дамы и господа, передайте привет WP Rocket, одному из лучших премиальных плагинов для кэширования WordPress.
Если у вас есть немного денег, чтобы инвестировать в свой сайт, WP Rocket, вероятно, является единственным премиальным плагином кэширования, который вам когда-либо понадобится.
Начнем с того, что WP Rocket невероятно прост в настройке даже при наличии миллиона функций. Как только вы активируете плагин, WP Rocket немедленно начинает кэшировать ваш сайт. Это верно, вам не нужно настраивать бесконечный список настроек для кэширования вашего сайта WordPress; просто установите плагин, нажмите кнопку активации, и вы перейдете на более быстрые веб-страницы.
И хотя WP Rocket удобен для новичков, он поставляется с множеством хуков, которые помогают разработчикам значительно расширить функциональность плагина.
Но как плагин увеличивает скорость загрузки WordPress? WP Rocket минимизирует файлы HTML, JavaScript и CSS. Если этого недостаточно, WP Rocket поставляется с предварительной загрузкой кэша, которая мгновенно улучшает индексацию вашего сайта поисковыми системами. То есть плагин поддерживает браузер и кеш страниц.
Кроме того, WP Rocket поставляется с ленивой загрузкой. По этой причине изображения на вашем сайте загружаются только тогда, когда посетитель прокручивает страницу вниз.
Facebook и YouTube среди других крупных сайтов особенно любят эту технику. Вы также можете использовать ленивую загрузку в свою пользу благодаря WP Rocket. Плюс плагин построен в соответствии с лучшими практиками WordPress, то есть он чистый, прокомментированный и хорошо документированный.
Компания WP Rocket предлагает вам три ценовых пакета, а именно не замужем (49 $), плюс (99 $) а также Бесконечно (249 долларов). Мы рекомендуем всегда выбирать пакет, подходящий для вашего бизнеса. Они также предлагают гарантию возврата денег в течение 14 дней, что означает, что вы можете без риска протестировать WP Rocket.
Определяем требования к функционалу
Мои требования к функционалу соответствуют классическому многостраничному корпоративному сайту с посещаемостью от 100 до 10 000 чел. в день, со своим блогом, на который ведётся реклама с UTM-метками. Также я делаю большой акцент на автоматизацию, чтобы не приходилось заниматься постоянными доработками и настроить кеширование можно было без особых усилий.
Автокеширование. Сайты приходится периодически обновлять, выкладывать новости, менять текст, картинки и т.д. Кеш-копия страниц в этом случае хранится определённое время, а после обновления страниц сайта необходимо заново создавать кеш-файлы. В этом случае часть пользователей, ровно, как и поисковых роботов, будут видеть насколько долго загружаются некоторые страницы сайта. Чтобы этого избежать, плагины предлагают механизм автоматического кеширования. В этом случае плагин самостоятельно производит обход сайта и сам создает закешированные копии страниц
Важно, чтобы этот механизм у плагина работал без сбоев.
Игнорирование части запросов URL-адреса. Большинство рекламщиков используют для отслеживания эффективности своих рекламных кампаний UTM-метки (или другие GET-параметры)
В этом случае они добавляют в адрес страницы ряд запросов, которые никак не влияют на логику работы сайта. Например, у нас есть страница товара, который мы рекламируем: https://www.site.com/landing-page/, но пользователь, перешедший на неё из рекламы, увидит адрес следующего формата: https://www.site.com/landing-page/?utm_source=yandex&utm_medium=cpc&utm_campaign=promo&utm_content=banner&utm_term=i-wan-to-buy-something&yclid=93473892748392743473829.Естественно, сайт о существовании этой страницы даже не догадывается, и кэш под неё не существует. Он будет создан в момент перехода пользователя по этой длинной ссылке. Но даже, если рекламщик не будет добавлять UTM-метки, то Яндекс Директ, Google Ads или иные рекламные системы будут подставлять свои метки для отслеживания (например, yclid, gclid). Значения таких меток будут всегда разными, соответственно, сайт будет воспринимать их как абсолютно разные страницы. В итоге, мы получаем ситуацию, когда каждый пользователь, привлеченный с помощью рекламы, видит, насколько медленно работает сайт, а хранилище кеша пухнет от кучи мусорных файлов, которые никогда больше не будут задействованы.Поэтому, плагин кеширования должен учитывать существование некоторых GET-параметров, которые необходимо исключать из URL-адреса страницы при попытке найти подходящий кеш-файл или же создать новый.
Возможность использования PHP-функций. Это может прозвучать странно, ведь само по себе кеширование подразумевает предотвращение исполнения PHP-скриптов или работу с БД, но только не в моём случае.В своё время на разных проектах я неоднократно сталкивался с проблемами стандартных систем аналитики, основанных на JavaScript, таких как Яндекс Метирка или Google Analytics, при анализе лидов. Та же Метрика попросту не видит части заявок, данные отображает в обезличенном виде и с задержкой. Каждый второй научился устанавливать AdBlock, который не передаёт в Метрику JavaScript-события и вырезает прочие скрипты с сайтов. Более того, оказалось, у части пользователей с мобильных устройств не работает JavaScript, который необходим для корректной работы Метрики. Как итог, мы имеем статистику с определённой погрешностью.Поэтому я сделал свою кастомную систему для аналитики заявок на сайте, которая работает через PHP, а не через JavaScript и не позволяет никаким данным потеряться. И именно здесь появляются проблемы, когда большинство кеширующих плагинов не позволяет при первом визите пользователя запустить нужный PHP-код, который сохранит полную информацию об источнике и характеристиках визита.
Как установить Memcached
Здесь существует несколько способов. Один из более сложных для начинающих вебмастеров, это установка Memcached на свой хостинг, если вы обладаете нужными правами админа. Что больше подходит для VPS — виртуальный выделенный сервер. Также можно скачать и установить программное обеспечение Memcached с оф. сайта (https://memcached.org/) на свой компьютер, будет собственный локальный сервер кэширования.
Эти два вышеперечисленных способа и ряд других могут вызвать много трудностей у новичков, достаточно взглянуть на мануалы в интернете по установке Memcached. Мы рассмотрим более легкий и удобный вариант — это установка Memcached с помощью плагина W3 Total Cache
Внимание! Есть маленькая иголка в стоге сена — ваш хостинг должен уже иметь настроенный Мемкеш. Это можно узнать в службе поддержки сервера
Большинство известных хостингов предоставляют такую возможность.
Кэширование страниц WordPress
Кешировать страницы блога на WordPress я буду с помощью плагина Batcache. Он позволяет кэшировать страницы в WordPress с помощью механизма кэширования объектов расмотренного ранее. Batcache используется во многих высоко посещаемых проектах, включая сеть WordPress.com.
Что такое Batcache
Плагин Batcache нацелен на проекты с высокой посещаемостью. Он написан для выполнения только одной задачи — кэширование страниц. Основная идея плагина — использование постоянного кэша объектов WordPress для хранения данных. Это позволяет кэшировать страницы на серверах Memcached, Redis, APC и др.
Как установить WordPress плагин Batcache
До установки плагина Batcache, проверьте, что у вас работает плагин для внешнего кэширования объектов, например Memcached Object Cache, рассмотренный выше. Для конфигурирования плагина кэширования объектов вам потребуется root-доступ к вашей хостинг-площадке.
Batcache можно скачать из официального репозитория WordPress.org, но не спешите его активировать на вашем сайте. Дистрибутив Batcache содержит в себе два отдельных плагина: advanced-cache.php для кэширования страниц и batcache.php (Batcache Manager) для некоторых дополнений к основному плагину.
Активация основного плагина Batcache происходит путем копирования файла advanced-cache.php из архива в директорию wp-content. Файл (или «drop-in») advanced-cache.php является специальным для WordPress, он исполняется на ранней стадии загрузки ядра, и именно с помощью этого файла реализуется кэширование страниц в WordPress.
После копирования advanced-cache.php в директорию wp-content, необходимо включить его обработку в файле конфигурации wp-config.php с помощью специального параметра:
define( 'WP_CACHE', true );
Это строка должна быть выше (по тексту) подключения файла wp-settings.php.
Как проверить, что плагин работает
После объявления константы, плагин Batcache начинает автоматически кэшировать страницы. Для того, чтобы проверить его работоспособность, посетите любую страницу вашего сайта и просмотрите ее исходный код. Batcache автоматически добавит в конец страницы примерно следующую информацию:
<!-- generated 179 seconds ago generated in 0.093 seconds served from batcache in 0.002 seconds expires in 121 seconds -->
Эта информация говорит о том, что страница была сгенерирована 179 секунд назад за 0.093 сек. Выдача страницы произошла с помощью Batcache за 0.002 сек., обновление данной страницы в кэше произойдет через 121 секунду.
Batcache не кэширует страницы для вошедших (залогиненных) пользователей. Чтобы проверить его работу лучше воспользоваться режимом инкогнито в вашем браузере (Ctrl+Shift+P в FireFox или Ctrl+Shift+N в Google Chrome).
Как настроить плагин BatCache
Настройки по-умолчанию подходят для большинства сайтов, но при желании вы всегда можете их скорректировать. А так как в Batcache нет интерфейса для настройки плагина и все параметры находятся в исходном коде плагина. То нам необходимо создать файл настроек batcache-config.php в корневой директории WordPress и подключитm его в wp-config.php следующим образом:
require_once( ABSPATH . 'batcache-config.php' );
Эту строку необходимо разместить до подключения файла wp-settings.php, но после объявления константы ABSPATH.
В самом файле batcache-config.php необходимо объявить массив с настройками, который по умолчанию может быть пустым:
<?php $batcache = array();
Далее в этот массив и в этом же файле можно добавлять параметры следующим образом:
$batcache = 600;
В этом примере мы устанавили временной интервал 600 секунд для max_age (время жизни одной страницы в кэше).
По анологии можно изменять следующие параметры:
- max_age — время жизни одной страницы
- times — количество требуемых посещений, перед тем как страница попадает в кэш
- seconds — работает вместе с параметром times, сбрасывает счетчик через установленное время
- debug — установить false для предотвращения вывода информации о кэше в исходном коде страниц
- group — группа используемая для генерации ключей в кэше объектов. Изменив группу вы можете «сбросить» весь кэш страниц
- cache_redirects — установите в положение true для того, чтобы кэшировать редиректы
Подробнее обо всех переменных и вариантах тонкой настройки можно прочитать на странице плагина в GitHub — https://github.com/Automattic/batcache
Для чего нужен плагин Batcache Manager
Вспомогательный плагин Batcache Manager объявляет полезную функцию batcache_clear_url(), с помощью который можно обновить кэш по определенному адресу. В частности Batcache Manager автоматически использует эту функцию для обновления кэша главной страницы и страницы записи при ее сохранении.
Browser Cache
Browser Caching is extremely important for improving site performance, and it is recommended that you enable it in nearly all situations. Browsers are already parsing HTTP headers, so we can add some information to these headers that declare how long the assets should be held on to, or if the browser should download a newer copy.
When users visit your site, their browser will examine the HTTP headers being passed to determine if it should store a local copy of the assets. Not only will your site load faster for users since they are loading local copies of your stylesheets, javascript, images, fonts, and etc, but these assets will not have to be served from your hosting plan when a user navigates through your site.
- Configuring Browser Caching in W3 Total Cache
- What is Gzip Compression and How Do I Enable it?
- What is Brotli Compression and Why Do I Need it?
Минификация
Эта опция позволяет разделить конструкцию тем и плагинов; используйте её только в случае, если точно уверены, что тема совместима с этой опцией.
Примечание: В данном руководстве для примера используется тема Twenty Thirteen, совместимая с минификацией.
Прежде чем включить эту опцию, нужно отключить Auto Minify Test, так как для его успешного выполнения необходимо несколько правил перезаписи. Их можно попробовать преобразовать в понятный для lighttpd формат (из .htaccess или nginx.conf), но оно того не стоит, поскольку минификация работает и без этих тестов.
Вернитесь в панель управления WordPress и откройте Performance > General Settings. Здесь можно включить минификацию.
Откройте сайт WordPress в браузере и просмотрите код. В нём можно найти минифицированные CSS и JS:
Если дизайн сайта повреждён, возможно, правила перезаписи минификации в lighttpd.conf указаны неверно или вы забыли перезапустить lighttpd.
Выводы
Несмотря на сложность настройки сервер memcached и плагины Memcached Object Cache и Batcache позволяют увеличить производительность вашего WordPress сайта и его стрессоустойчивость при большом количестве посещений без дополнительных затрат на «железо».
После подключения плагина Memcached Object Cache на этом блоге существенно сократилось количество обращений к базе данных MySQL.
У меня в подвале сайта есть статистика времени генерации страницы, количества обращений к базе и объем потребляемой при этом памяти WordPress.
До использования плагина Memcached Object Cache на странице с картой сайта (https://moonback.ru/sitemap) результаты были такими (это одна из самый «тяжелых» страниц в плане обращений к базе данных):
После того как я установил сервер memcached и подключил плагин Memcached Object Cache количество обращений к базе заметно сократилось:
Несколько улучшилось и время создания страницы (генерации).
После подключения плагина Batcache в случае нахождения страницы в кеше время ее создания (отдачи клиенту) не превышает несколько тысячных долей секунды, что сравнимо со скоростью работы статичного HTML сайта.
Таким образом с помощью двух плагинов мы увеличили скорость работы динамического сайта до уровня статического, а так же сократили время генерации страницы при ее первом посещении перед попаданием в кеш и для вошедших (залогиненных) пользователей.