Как настроить кэширование Redis для ускорения WordPress в Ubuntu 14.04

Вступление

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

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

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

Домашняя страница WordPress по умолчанию без Redis:

Время загрузки страницы 804 мс

Домашняя страница WordPress по умолчанию с Redis:

449мс время загрузки страницы

[.note] #Note: Эта реализация кэширования Redis для WordPress основана на хорошо прокомментированном, но стороннем скрипте. Скрипт размещен на сервере ресурсов DigitalOcean, но был разработан сторонней организацией. Если вы хотите создать собственную реализацию кэширования Redis для WordPress, вам нужно будет проделать еще немного работы на основе представленных здесь концепций.
#

Redis против Memcached

Memcached также является популярным выбором кеша. Однако на этом этапе Redis делает все, что может сделать Memcached, с гораздо большим набором функций. ЭтотStack Overflow page содержит некоторую общую информацию в качестве обзора или введения для людей, плохо знакомых с Redis.

Как работает кеширование?

При первой загрузке страницы WordPress запрос к базе данных выполняется на сервере. Redis запоминает, илиcaches, этот запрос. Таким образом, когда другой пользователь загружает страницу Wordpress, результаты предоставляются из Redis и из памяти без необходимости запрашивать базу данных.

Реализация Redis, используемая в этом руководстве, работает как постоянный объектный кэш для WordPress (без срока действия). Кэш объектов работает путем кэширования запросов SQL в памяти, которые необходимы для загрузки страницы WordPress.

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

Если значение обновляется в базе данных (например, в WordPress создается новое сообщение или страница), значение Redis для этого запроса становится недействительным, чтобы предотвратить представление неверно кэшированных данных.

Если у вас возникнут проблемы с кешированием, кеш Redis можно очистить с помощью командыflushall из командной строки Redis:

redis-cli

Когда вы увидите приглашение, введите:

flushall

Дополнительная ссылка:WordPress Object Cache Documentation

Предпосылки

Перед началом работы с этим руководством вам необходимо настроить пользователя sudo и установить WordPress.

  • Ubuntu 14.04 Droplet (рекомендуется 1 ГБ или выше)

  • Добавитьsudo user

  • Установите WordPress. Это руководство было протестировано сthese instructions, хотя есть много способов установить WordPress.

[[step-1 -—- install-redis]] == Шаг 1. Установите Redis

Чтобы использовать Redis с WordPress, необходимо установить два пакета:redis-server иphp5-redis. Пакетredis-server предоставляет сам Redis, а пакетphp5-redis предоставляет расширение PHP для приложений PHP, таких как WordPress, для связи с Redis.

Установите программное обеспечение:

sudo apt-get install redis-server php5-redis

[[step-2 -—- configure-redis-as-a-cache]] == Шаг 2. Настройте Redis как кэш

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

Отредактируйте файл/etc/redis/redis.conf и добавьте следующие строки внизу:

sudo nano /etc/redis/redis.conf

Добавьте эти строки в конец файла:

maxmemory 256mb
maxmemory-policy allkeys-lru

После внесения изменений сохраните и закройте файл.

[[step-3 -—- receive-redis-cache-backend-script]] == Шаг 3 - Получите серверный скрипт Redis Cache

Этот сценарий PHP для WordPress был первоначально разработанEric Mann. Это серверный кэш Redis для WordPress.

Загрузите скриптobject-cache.php. Это загрузка с сервера ресурсов DigitalOcean, ноthis is a third-party script. Вы должны прочитать комментарии в сценарии, чтобы увидеть, как он работает.

Загрузите скрипт PHP:

wget https://assets.digitalocean.com/articles/wordpress_redis/object-cache.php

Переместите файл в каталог/wp-content вашей установки WordPress:

sudo mv object-cache.php /var/www/html/wp-content/

В зависимости от вашей установки WordPress ваше местоположение может отличаться.

[[step-4 -—- enable-cache-settings-in-wp-config-php]] == Шаг 4. Включите настройки кеша в wp-config.php

Затем отредактируйте файлwp-config.php, чтобы добавить соль ключа кеша с именем вашего сайта (или любой другой строкой, которую вы хотите).

nano /var/www/html/wp-config.php

Добавьте эту строку в конец раздела* Authentication Unique Keys and Salts.:

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

Вы можете использовать свое доменное имя или другую строку в качестве соли.

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

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

define('WP_CACHE', true);

Все вместе, ваш файл должен выглядеть следующим образом:

 * Authentication Unique Keys and Salts.

. . .

define('NONCE_SALT',       'put your unique phrase here');

define('WP_CACHE_KEY_SALT', 'example.com');
define('WP_CACHE', true);

Сохраните и закройте файл.

[[step-5 -—- restart-redis-and-apache]] == Шаг 5. Перезапустите Redis и Apache.

Наконец, перезапуститеredis-service иapache2.

Перезагрузите Redis:

sudo service redis-server restart

Перезапустите Apache:

sudo service apache2 restart

Перезапуститеphp5-fpm, если вы его используете; это не является частью базовой установки в DigitalOcean:

sudo service php5-fpm restart

Это оно! Ваш сайт WordPress теперь использует Redis кеширование. Если вы проверите скорость загрузки своей страницы и использование ресурсов, вы должны заметить улучшения.

Монитор Redis с помощью Redis-Cli

Чтобы отслеживать Redis, используйте командуredis-cli следующим образом:

redis-cli monitor

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

Ниже приведен пример вывода с сайта WordPress, настроенного для этого руководства с использованием Redis:

OK
1412273195.815838 "monitor"
1412273198.428472 "EXISTS" "example.comwp_:default:is_blog_installed"
1412273198.428650 "GET" "example.comwp_:default:is_blog_installed"
1412273198.432252 "EXISTS" "example.comwp_:options:notoptions"
1412273198.432443 "GET" "example.comwp_:options:notoptions"
1412273198.432626 "EXISTS" "example.comwp_:options:alloptions"
1412273198.432799 "GET" "example.comwp_:options:alloptions"
1412273198.433572 "EXISTS" "example.comwp_site-options:0:notoptions"
1412273198.433729 "EXISTS" "example.comwp_:options:notoptions"
1412273198.433876 "GET" "example.comwp_:options:notoptions"
1412273198.434018 "EXISTS" "example.comwp_:options:alloptions"
1412273198.434161 "GET" "example.comwp_:options:alloptions"
1412273198.434745 "EXISTS" "example.comwp_:options:notoptions"
1412273198.434921 "GET" "example.comwp_:options:notoptions"
1412273198.435058 "EXISTS" "example.comwp_:options:alloptions"
1412273198.435193 "GET" "example.comwp_:options:alloptions"
1412273198.435737 "EXISTS" "example.comwp_:options:notoptions"
1412273198.435885 "GET" "example.comwp_:options:notoptions"
1412273198.436022 "EXISTS" "example.comwp_:options:alloptions"
1412273198.436157 "GET" "example.comwp_:options:alloptions"
1412273198.438298 "EXISTS" "example.comwp_:options:notoptions"
1412273198.438418 "GET" "example.comwp_:options:notoptions"
1412273198.438598 "EXISTS" "example.comwp_:options:alloptions"
1412273198.438700 "GET" "example.comwp_:options:alloptions"
1412273198.439449 "EXISTS" "example.comwp_:options:notoptions"
1412273198.439560 "GET" "example.comwp_:options:notoptions"
1412273198.439746 "EXISTS" "example.comwp_:options:alloptions"
1412273198.439844 "GET" "example.comwp_:options:alloptions"
1412273198.440764 "EXISTS" "example.comwp_:options:notoptions"
1412273198.440868 "GET" "example.comwp_:options:notoptions"
1412273198.441035 "EXISTS" "example.comwp_:options:alloptions"
1412273198.441149 "GET" "example.comwp_:options:alloptions"
1412273198.441813 "EXISTS" "example.comwp_:options:notoptions"
1412273198.441913 "GET" "example.comwp_:options:notoptions"
1412273198.442023 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442121 "GET" "example.comwp_:options:alloptions"
1412273198.442652 "EXISTS" "example.comwp_:options:notoptions"
1412273198.442773 "GET" "example.comwp_:options:notoptions"
1412273198.442874 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442974 "GET" "example.comwp_:options:alloptions"

НажмитеCTRL-C, чтобы остановить вывод.

Это полезно для точного просмотра запросов Redis.

Заключение

После выполнения этого руководства WordPress теперь будет настроен для использования Redis в качестве кэша в Ubuntu 14.04.

Ниже приведены некоторые дополнительные руководства по безопасности и администрированию для WordPress, которые могут представлять интерес:

Related