WordPress. Кеширование
09.10.2019
Теги: CMS • Web-разработка • WordPress • Кеширование
Кеширование данных позволяет ускорить работу сайта и существенно снизить нагрузку на сервер. В ядре WordPress существует три основных вида кеширования — кеширование страниц (page cache), кеширование объектов (object cache) и транзитное кеширование (transient cache).
- Кеширование страниц — позволяет сохранять в кеш страницы сайта целиком и выдавать их из кеша при последующих запросах
- Кеширование объектов — позволяет кешировать данные произвольного типа в оперативной памяти на период формирования страницы
- Транзитное кеширование — очень похоже на кеширование объектов, но позволяет сохранять данные на длительный промежуток времени
Кеширование страниц
Для выдачи одной страницы архива приходится проделывать много работы. Это множество запросов в базу данных — чтобы получить последние записи, настройки виджетов, настройки темы, активные плагины, название и описание сайта и так далее. Кеширование страниц (page cache) позволяет сохранить результат выдачи страницы целиком в кеш и при последующем запросе этого URL выдать страницу уже из кеша.
При изменении содержания записи или странцы, кеш страницы сбрасывается, и при последующем запросе кешируется уже новая страница с обновлёнными данными. В самом ядре WordPress кеширование страниц не реализовано, но есть все необходимое для реализации этого на уровне плагинов.
Для реализации страничного кеширования необходимо создать файл advanced-cache.php
в директории wp-content
и определить константу WP_CACHE
со значением true
в файле конфигурации wp-config.php
. Файл advanced-cache.php
является специальным для WordPress, он исполняется на ранней стадии загрузки ядра, и именно с помощью этого файла реализуется кеширование страниц.
Кеширование объектов
Объектное кеширование (object cache) реализовано в самом ядре WordPress. Механизм позволяет хранить объекты произвольного типа в памяти и используется практически для всего: опции, записи, страницы, метки, категории, пользователи и многое другое.
Для примера, рассмотрим как работает кеширование объектов для опций WordPress. При первом вызове функции get_option()
срабатывает функция wp_load_alloptions()
, которая загружает в объектный кеш из базы данных все опции сайта, помеченные как autoload
. Поэтому любые следующие вызовы функции get_option()
уже не будут делать запросы к БД, а будут получать данные из кеша.
Кеширование объектов в WordPress реализовано классом WP_Object_Cache
, но обращаться к его методам можно и через вспомогательные функции:
wp_cache_get()
читает значение из кеша объектов по заданному ключуwp_cache_add()
добавляет значение в кеш объектов по заданному ключуwp_cache_set()
устанавливает заданное значение по заданному ключуwp_cache_replace()
заменяет существующее значение в кеше объектовwp_cache_delete()
удаляет значение из кеша объектов по заданному ключуwp_cache_incr()
иwp_cache_decr()
увеличение или уменьшение значенияwp_cache_flush()
сбрасывает весь кеш объектов
Время жизни кеша объектов
Одним из ключевых моментов кеширования объектов является то, что кеш существует лишь на протяжении того короткого периода времени, пока формируется страница. На первый взгляд такой кеш не очень полезен, но если посчитать, сколько раз за один запрос WordPress выполняет функцию get_option()
, то выгода от кеширования объектов становится очевидной.
В WordPress есть возможность использовать внешнее хранилище для кеша объектов, например Memcached или Redis, при этом кеш объектов становится постоянным. Это значит, что при следующем обращении к странице сайта, ранее закешированные значения по прежнему доступны. Для этого нужно создать файл object-cache.php
в директории wp-content
и реализовать в нем класс WP_Object_Cache
и все перечисленные выше функции.
Транзитное кеширование
Транзитное кеширование (transient cache) позволяет разработчикам сохранять данные на определённый промежуток времени. Для работы с транзитным кешем предназначены функции get_transient()
, set_transient()
и delete_transient()
. В терминологии WordPress сохраняемые значения называются временными опциями (в отличие от обычных опций, которые хранятся без ограничений по времени). При создании такой опции нужно указать время жизни, по истечении которого WordPress удалит сохраненное значение.
Транзитное кеширование чаще всего используется для хранения данных, когда речь идёт о запросах на внешние ресурсы, например для вывода сообщения из сети Twitter или для вывода прогноза погоды со стороннего сервиса. Подобное кеширование так же используется в ядре — при запросах на обновление тем, плагинов и ядра.
- WordPress. Установка и использование WP-CLI
- WordPress. Загрузка svg-файлов
- WordPress. Фильтр записей по произвольным полям. Часть 3 из 3
- WordPress. Фильтр записей по произвольным полям. Часть 2 из 3
- WordPress. Фильтр записей по произвольным полям. Часть 1 из 3
- WordPress. Добавляем мета-теги. Часть 3 из 3
- WordPress. Метабоксы. Часть 2 из 2
Поиск: CMS • Web-разработка • WordPress • Кеширование