Memcached является одним из самых быстрых и популярных средств для кэширования произвольных данных в оперативной памяти. В этой статье мы рассмотрим установку и настройку сервера Memcached для кэширования объектов в WordPress.
Грамотное кэширование в WordPress позволяет ускорить работу сайта, снизить нагрузку и потребление ресурсов хостинг-площадки, что особенно важно если речь идет о крупных высоко-посещаемых проектах.
Если вам не знаком термин «кэширование» советуем сперва прочитать нашу статью, где мы рассматриваем самые основы всех видов кэширования в WordPress. В статье про кэширование объектов вы узнаете подробнее о классе WP_Object_Cache
и о его важной роли в ядре WordPress.
Memcached
Memcached это сервер, который позволяет быстро и эффективно сохранять данные в память с определенным ключом, с помощью которого эти данные можно так же быстро получить.
В силу своей простоты Memcached работает гораздо быстрее чем MySQL, и потребляет гораздо меньше памяти. Есть и ограничения связанные с этой простотой, например нельзя отправлять сложные запросы на выборку, поэтому полностью заменить базу данных сервером Memcached в WordPress невозможно.
Кэширование объектов в WordPress работает по тому же принципу, что и Memcached — произвольные значения или объекты хранятся в памяти под определенным ключом. Недостаток один — поскольку кэш объектов в WordPress является непостоянным, все закэшированные значения сбрасываются при следующем посещении страницы сайта.
Сервер Memcached помогает решить эту проблему и сделать объектный кэш постоянным. Это значит, что такие данные как опции сайта WordPress, пользователи, термины, записи, мета-данные и прочее, можно сразу получать из хранилища Memcached в обход базы данных MySQL.
Установка Memcached
Для того, чтобы установить сервер Memcached вам потребуется доступ администратора к вашей хостинг-площадки. Большинство провайдеров виртуального хостинга не предоставляют такой возможности, поэтому следует смотреть в сторону виртуальных (VPS) или выделенных (dedicated) серверов. Учтите так же, что на некоторых специализированных хостинг-площадках уже установлен и настроен сервер Memcached, например WP Engine.
Установить сервер Memcached легко с помощью менеджера пакетов в том или ином дистрибутиве Linux. Например в Ubuntu или Debian Linux сделать это можно с помощью утилиты apt-get
:
sudo apt-get install memcached
После установки сервер Memcached запустится сразу. Конфигурация сервера находится в файле /etc/memcached.conf
, где вы можете настраивать такие параметры как память, адрес и порт. Эти данные вам потребуются при конфигурации плагина для WordPress.
После внесения изменений в конфигурационный файл не забудьте перезагрузить сервер:
sudo service memcached restart
Учтите, что перезагрузка сервера удаляет все закэшированные данные, поэтому перезагрузка на живом сайте может вызвать дополнительную нагрузку на хостинг-сервер и крайне не рекомендуется.
Memcached в WordPress
Memcached Object Cache является самым популярным и надежным плагином для кэширования объектов на сервере Memcached. Он написан Райаном Борэном, одним из ведущих разработчиков ядра WordPress.
Для работы данного плагина вам потребуется расширение memcache для PHP, которое можно найти в официальном репозитории PECL. Установить данное расширение можно с помощью команды pecl
на вашем сервере:
sudo pecl install memcache
После установки расширения (если pecl не сделает это за вас) вам необходимо будет перезагрузить PHP, чтобы интерпретатор подключил новый модуль.
Установка плагина Memcached Object Cache отличается от установки других — вам не следует размещать плагин в директории wp-content/plugins, поскольку Memcached Object Cache является не типичным плагином, а так называемым дроп-ином (или вкраплением), который выполняется на самом раннем этапе загрузки ядра WordPress, и который не возможно отключить через панель администрирования.
Файл object-cache.php из архива плагина следует разместить в директории wp-content, после чего плагин автоматически становится активным.
Если на данном этапе при посещении вашего сайта вы увидели «белый экран смерти», то причин может быть несколько:
- Не установлен модуль memcache для PHP
- Не запущен сервер Memcached
- Нет доступа к серверу, например он сконфигурирован на другой порт
Конфигурация плагина
Интерфейса для конфигурации плагина Memcached Object Cache нет. Вся конфигурация происходит с помощью PHP файла, например wp-config.php
:
define( 'WP_CACHE_KEY_SALT', '' ); $memcached_servers = array( '127.0.0.1:11211' );
Первая директива определяет префикс всех сохраняемых ключей на сервере. Важно установить уникальный префикс, если сервер обслуживает более одного сайта на WordPress, иначе может возникнуть конфликт ключей.
Глобальный массив $memcached_servers
содержит адреса и порты всех серверов Memcached. Если вы используете стандартную конфигурацию, то вероятнее всего данный массив вам объявлять не нужно.
Чтобы отключить кэширование объектов в Memcached достаточно удалить или переименовать файл object-cache.php в директории wp-content. Учтите, что это не удалит данные на сервере. Если вы хотите удалить все данные с сервера, его необходимо перезагрузить или отправить команду flush_all
.
Плагин Memcached Redux является альтернативой плагину Memcached Object Cache. Он использует класс Memcached и расширение для PHP memcached (а не memcache), которое так же можно установить из репозитория PECL.
Статистика Memcached
К серверу Memcached можно подключиться с помощью утилиты telnet
и посмотреть статистику с помощью команды stats
:
telnet 127.0.0.1 11211 stats STAT pid 7794 STAT uptime 3084 STAT time 1395221340 STAT version 1.4.13 ...
Данная статистика позволит вам узнать эффективность кэширования объектов и потребляемую память. Самыми важными значениями здесь являются get_hits
и get_misses
которые означают наличие или отсутствие объекта в кэше при запросе. Если значение get_misses
не намного меньше чем get_hits
, то возможно вам необходимо увеличить выделяемую память серверу Memcached.
Статистику использования кэша объектов в WordPress можно посмотреть с помощью плагина Debug Bar, а если вы предпочитаете графическое представление статистики Memcached, вы можете попробовать скрипт memcache.php.
Безопасность
Важно отметить, что самой надежной защитой сервера Memcached является ограничение доступа к нему по IP адресу на уровне системы. На самом сервере Memcached защита от злоумышленников не предусмотрено, разве что аутентификация с помощью SASL в более новых версиях сервера.
Это значит, что Memcached следует использовать только в закрытых и защищенных сетях.
В Memcached так же нет пользователей и привилегий, поэтому если вы используете один сервер для двух разных сайтов, один сайт может легко получить доступ к данным другого сайта, независимо от уникальных префиксов.