Black Friday! Получите до 9 месяцев Хостинга в подарок!

Подробнее

Объектный кэш для WordPress – когда нужен и как реализовать?

post thumbnail

Производительность вашего WordPress-сайта можно значительно увеличить, использовав объектное кэширование. Однако не каждый ресурс в таком случае будет работать быстрее.

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

Важно! Все, о чем будет идти речь ниже, не касается услуг shared-хостинга. Ведь на серверах общего пользования не установлены Redis, Memcached или другие подобные кэшеры. Инструкция актуальна для услуг VPS.

Что такое объектный кэш Redis?

Если веб-сайт кэшируется, это означает, что его элементы, такие как изображения, таблицы стилей и другие загружаются, а затем сохраняются в так называемом кэше.

Таким образом запоминается, что было загружено и создается его статическая версия. Затем эта версия показывается намного быстрее при следующей загрузке сайта. Как результат – страница загружается быстрее, используя меньше ресурсов сервера.

Когда речь идет о Redis, кэширование происходит на стороне сервера, в его оперативной памяти. Используя объектный кэш, WordPress сохраняет результаты запросов к базе данных в памяти. Таким способом их количество уменьшается, как и время ответа сайта.

Memcached VS Redis: в чем разница?

Как и Redis, Memcached – это сервис с открытым исходным кодом, который поддерживает все основные языки программирования и позволяет хранить информацию по типу «ключ-значение». Используют Memcached в основном для кэширования сессий.

Попробуем кратко описать сам процесс кэширования. Запрос пользователя оказывается в хранилище Memcached, где происходит поиск готовой компиляции. Если она отсутствует, то запрос передается на сервер, который отправляет результат пользователю. Здесь же он сохраняется в оперативной памяти с помощью Memcached.

Когда подобный запрос повторится, результат будет передаваться из кэша, что сократит время отклика и разгрузит мощности сервера. А значит сайт будет загружаться значительно быстрее.

Redis – система управления базами данных, похожая по принципу работы с Memcached. Ресурс действует по тому же методу сохранения «ключ-значение» и так же подойдет сайтам, у которых много запросов к базам данных.

Однако Redis имеет более широкий функционал и используется не только для кэширования. Он также может сглаживать блокировку сессий на PHP, что позволяет загружать сайт у всех пользователей, а не по очереди. Работает как message broker (программа, которая помогает дифференцировать сообщения по группам и получателям), для небольших площадок может использоваться как СУБД, кэширует PHP-код и тому подобное.

Когда требуется объектное кэширование Redis?

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

Для того, чтобы получать пользу от использования Redis, сайт должен быть динамическим и загружать множество информации из базы данных. Это может быть информация о пользователях, ссылки и т. д.

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

Итак, объектный кэш вам пригодится:

  • если у вас динамический сайт, на котором много трафика, или такой ожидается в ближайшем будущем;
  • если вы не можете кэшировать содержимое сайта с помощью стандартных плагинов; 
  • если нужно более эффективно использовать ресурсы сервера; 
  • если сайт сильно замедляется при наплывах пользователей или/и из-за большой нагрузки на базу данных.

Можно ли ускорить WordPress с помощью Redis?

Для того, чтобы Object Cache ускорил ваш сайт на WordPress, должны выполняться определенные условия.

  • Не стоит использовать Redis со стандартными плагинами вроде LiteSpeed Cache, WP Fastest Cache или WP-Rocket. Или следует настроить их так, чтобы они работали исключительно на отдельных страницах.
  • Ускорения не будет, если время генерации страницы более 0,5 секунды или увеличено из-за большого количества одновременного доступа пользователей.
  • Также Redis вряд ли поможет, если время на запросы к базе данных выше, чем скорость генерации страницы.

Можно сделать вывод, что Redis помогает, если на вашем сайте одновременно выполняется значительное количество параллельных запросов к базе данных. Тогда работа ресурса будет ускорена благодаря объектному кэшированию.

Установка и настройка Redis на WordPress

Использование Redis для объектного кэширования предполагает установку и настройку самого Redis, затем установку PHP-расширения и плагина Redis Object Cache.

Инсталлировать Redis рекомендуется на Linux сервере. Если вы собираетесь делать это вручную, то перед началом необходимо выполнить еще ряд условий.

  • Корневой доступ к Linux-серверу.
  • Возможность установки Redis через SSH-доступ. Гайд, как получить доступ по SSH. 
  • Установленный WordPress.
  • PHP версия 7.0 или выше.
  • Установлены Wget и Sudo на сервере.
  • На сервере установлен текстовый редактор, например, Nano.
  • Phpize устанавливается для подготовки расширения PHP к компиляции.

Также рекомендуем создать резервную копию сайта на случай, если что-то пойдет не так и придется его восстанавливать. Дополнительно можете протестировать Redis перед тем как разворачивать его на рабочем сервере.

Установка Redis для объектного кэширования

Вы можете использовать менеджер пакетов вашего дистрибутива, например yum или apt. Но помните, что они не всегда будут обновлены до последней версии. Поэтому предлагаем использовать именно wget.

Чтобы установить последнюю версию, в командной строке введите:

wget http://download.redis.io/redis-stable.tar.gz

После этого введите:

tar xvzf redis-stable.tar.gz

Потом:

cd redis-stable

И наконец:

make

Настройки

Когда Redis установлен, необходимы дополнительные настройки, чтобы использовать его для объектного кэширования:

Чтобы получить доступ к файлу конфигурации, введите в строке:

sudo nano /etc/redis/redis.conf

Обратите внимание, что команда «nano» нужна, чтобы получить доступ к файлу с помощью редактора Nano. Если вы используете другой редактор, то замените команду на соответствующую.

Далее вам нужно найти, где написано:

#maxmemory

Потом замените его этим:

maxmemory 128mb
maxmemory-policy allkeys-lfu

Вместо 128 МВ можете подобрать числа в соответствии с вашими потребностями. Прежде всего учитывайте количество физической оперативной памяти на сервере, а затем ваш трафик. Например, многим может быть достаточно и 50 МВ. Но если у вас сайт с большим количеством пользователей, то 128 МВ или 256 МВ подходят лучше, если это позволяет оперативная память сервера.

Редактирование файла wp-config.php

После выполнения предыдущих действий Redis настроен на доступ к любым сохраненным данным для всех приложений на сервере. Поскольку это считается угрозой безопасности, важно отредактировать основной файл WordPress wp-config.php.

Откройте файл wp-config.php и над строкой «happy blogging» введите:

define( 'WP_CACHE_KEY_SALT', 'example.com:' );

Не забудьте заменить «example.com» на домен вашего сайта. Убедитесь, что ключ уникален. Его можно сгенерировать с помощью бесплатных сервисов Random Key Gen или KeyGen.io. Берегите этот ключ так же, как и свои пароли.

Установка расширения PHP

Важно разрешить WordPress связываться с хранилищем ключей Redis. Это позволит включить объектный кэш. Для этого необходимо установить расширение PHP, например, PHP Redis.

Возвращаемся к командной строке, в которой вводим:

wget https://github.com/nicolasff/phpredis/archive/master.zip

Следующей должна быть команда:

unzip master.zip

Потом:

cd phpredis-master

На данном этапа вы скачали и распаковали исходный код. Чтобы его установить, введите:

phpize

Дальше:

./configure

После этого:

make

И наконец:

sudo make install

Теперь PHP Redis установлен, и вам нужно создать новый файл INI. Это можно сделать с помощью следующей команды:

sudo echo "extension=redis.so" > /etc/php/7.x/apache2/conf.d/redis.ini

Обязательно замените «х» на число, которое будет отображать вашу версию PHP 7. Также имейте в виду: если вы не используете Apache, то путь к файлу должен отражать файловую иерархию на вашем сервере.

Перезапуск Redis и PHP

Важно перезапустить Redis и PHP, чтобы все изменения начали действовать.

Для перезапуска Redis введите команду:

sudo service redis-server restart

А чтобы перезапустить PHP введите такую строку:

apache2ctl restart

Еще раз напоминаем, что тем, кто не использует Apache, необходимо выполнить свою команду перезапуска.

Убедитесь, что Redis работает, введя команду:

redis-cli ping

Если вы увидите ответ «PONG», это означает, что Redis настроен и работает.

Далее можете установить и активировать плагин Redis Object Caching через админ-панель WordPress.

Объектный кэш | Блог HostPro

После установки включите объектный кэш в настройках («Enable Object Cache»).

Объектный кэш | Блог HostPro

Как только вы включите объектное кэширование, статус изменится на «Connected».

Объектный кэш | Блог HostPro

Здесь вы можете увидеть кнопку очистки именно объектного кэша «Flush Cache», ею можно будет воспользоваться, когда серверные операции выполняются некорректно.

Альтернатива Redis Object Cache – плагин Object Cache Pro

Поскольку Redis сейчас выкупают Red Hat и планируют делать плагин платным, поговорим еще об альтернативном варианте для объектного кэширования – плагине Object Cache Pro. Он оптимизирован для JetPack, WooCommerce и Yoast SEO. Поэтому использование этого плагина прекрасно подойдет для бизнеса.

Перед установкой Object Cache Pro рекомендуем настроить лицензионный ключ. Это поможет избежать сбоев в процессе установки. Самый простой способ это сделать – отредактировать файл wp-config.php. Сделать это можно, например, через вашу панель управления cPanel ⇨ «Файлы» ⇨ «Диспетчер файлов» ⇨ «public_html» ⇨ «config.php».

Объектный кэш | Блог HostPro

Объектный кэш | Блог HostPro

Откройте файл wp-config.php в файловом менеджере. Под строкой с надписью «Add any custom values between this line and the “stop editing” line» добавьте ниже приведенный код. Не забудьте ввести свой лицензионный ключ вместо «your-license-token».

define('WP_REDIS_CONFIG', [
'token' => '<your-license-token>',
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0, // change for each site
'maxttl' => 86400,
'timeout' => 1.0,
'read_timeout' => 1.0,
// 'prefetch' => true,
// 'split_alloptions' => true,
'debug' => false,
]);
define('WP_REDIS_DISABLED', false);

После добавления файла вы можете просмотреть список настроек и изменить нужные вам параметры. Если все в порядке, сохраните и закройте файл.

Установка Object Cache Pro на WordPress

После настройки параметров можете устанавливать плагин, скачав zip-файл. Перейдите на админ-панель WordPress и откройте вкладку плагинов. Нажмите «Add Plugins» и выберите «Upload Plugin». Затем найдите zip-файл и установите его.

Объектный кэш | Блог HostPro

После установки нажмите «Activate Plugin», чтобы включить его.

Объектный кэш | Блог HostPro

Перейдите в меню плагинов и нажмите «View Details» рядом с Object Cache Pro. После этого появится окно с информацией о самом плагине. Убедитесь, что у вас установлена последняя версия. Об этом можно узнать внизу справа. Если нет – обновите плагин и при необходимости включите автоматические обновления.

Объектный кэш | Блог HostPro

После установки плагина можете открыть его настройки, чтобы убедиться, что все работает. На информационной панели вы должны видеть «Status: Connected».

Объектный кэш | Блог HostPro

В завершение

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

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

Telegram Hostpro

Наш телеграм

с важными анонсами, розыгрышами и мемами

Присоединиться

Возможно, вас заинтересует

Как выбрать сервер для бухгалтерского учета?
Как выбрать сервер для бухгалтерского учета?

Любое предприятие, которое собирается масштабироваться, рано или поздно придет к автоматизации бизнес-процессов. Ключевую роль...

Топ советов для ускорения и оптимизации работы VPS
Топ советов для ускорения и оптимизации работы VPS

По сравнению с виртуальным хостингом VPS предоставляет большую независимость и контроль над ресурсами сервера....

Что такое снапшоты, что такое бэкапы, и чем они отличаются?
Что такое снапшоты, что такое бэкапы, и чем они отличаются?

Одна DDoS-атака или неудачное обновление WordPress может положить ваш сайт на лопатки. Поэтому, чтобы...