WordPress. Кеширование

09.10.2019

Теги: CMSWeb-разработка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 удалит сохраненное значение.

При использовании плагина для внешнего хранения кеша объектов (например Memcached или Redis), транзитное кеширование будет пользоваться этим хранилищем для хранения своих данных.

Транзитное кеширование чаще всего используется для хранения данных, когда речь идёт о запросах на внешние ресурсы, например для вывода сообщения из сети Twitter или для вывода прогноза погоды со стороннего сервиса. Подобное кеширование так же используется в ядре — при запросах на обновление тем, плагинов и ядра.

Поиск: CMS • Web-разработка • WordPress • Кеширование

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.