О сервисах кеширования

Рассказываем, для чего нужны сервисы кеширования, как их установить и настроить

О сервисах кеширования

Про кеш, но не про деньги?!

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

Кешируются результаты запросов к базам данных, вычислений, требовательных к ресурсам, запросы к API и ответы на них, такие веб-артефакты, как файлы HTML, JavaScript и изображения.

Преимущества кеширования:

  • производительность сайта или приложения увеличивается
  • снижаются затраты ресурсов на базы данных
  • уменьшается нагрузка на сервер
  • пользователь доволен быстрой работой сайта или приложения

Наиболее популярные сервисы кеширования — Memcached и Redis: они, кстати, у нас тоже есть.

Memcached

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

Для использования Memcached требуется модуль PHP. На наших серверах установлено два таких модуля — Memcache и memcached. Оба можно использовать.

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

<?php $memcache_obj = new Memcache; $memcache_obj->addServer('unix:///home/login/tmp/memcached.sock', 0); $status = $memcache_obj->getStats(); $MBUsed= (float)$status["bytes"]/(1024*1024); $MBSize=(float) $status["limit_maxbytes"]/(1024*1024); ?> Статистика Memcache: <table border='1'> <tr><td>Версия Memcache сервера</td><td> <?=$status ["version"];?></td></tr> <tr><td>Время работы Memcache (в секундах) </td><td><?=$status ["uptime"];?></td></tr> <tr><td>Максимальный объем памяти для Memcache</td><td><?=$MBSize;?> Мб</td></tr> <tr><td>Используется памяти</td><td><? printf("%.2f",$MBUsed);?> Мб</td></tr> </table>

«unix:///home/login/tmp/memcached.sock» — эта строчка может отличаться у разных хостингов, у нас login просто нужно заменить на логин вашего аккаунта. Обратиться к скрипту можно из браузера по ссылке: http://domain.ru/memcache.php , где domain.ru — домен вашего сайта.

Значение в графе «Используется памяти» должно быть больше нуля. Если оно близко к максимальному объему памяти, нужно увеличить размер кеша.

Скрипт работает на любом хостинге, не только нашем. Но если что-то не получится, всегда можно обратиться в поддержку. Или просто переехать к нам, а мы уже все сделаем ;)

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

Так он выглядит у нас:

  • Для Memcache: unix:///home/login/tmp/memcached.sock
  • Для memcached: /home/login/tmp/memcached.sock:0

Вместо login нужно поставить логин аккаунта.

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

Redis

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

Большинство языков программирования имеют расширения для работы с Redis, например, у PHP существует модуль PhpRedis.

Подключить Redis тоже очень просто, указав путь до сокета. У нас он выглядит так:

/home/login/tmp/redis.sock

Этот путь не будет сильно отличаться у других провайдеров.

Утилитой redis-cli можно сохранять, считывать, удалять данные, подключившись к серверу по SSH. Например, командой ниже можно подключиться к серверу Redis и проверить, используется ли хранилище сайтом или приложением:

redis-cli -s /home/login/tmp/redis.sock monitor

Также с помощью этой утилиты можно проверить объем используемой памяти:

redis-cli -s /home/login/tmp/redis.sock info memory

В строке used_memory_human можно увидеть количество потребляемой памяти:

~ redis-cli -s ~/tmp/redis.sock info memory # Memory used_memory:574968 used_memory_human:561.49K — смотреть сюда

Также при помощи Redis можно настроить хранение PHP-сессий. Для этого необходимо добавить в конфигурационный файл .htaccess директивы:

php_value session.save_handler "redis" php_value session.save_path "unix:/home/login/tmp/redis.sock" Путь во второй строчке также может отличаться у других хостингов. У нас вместо login нужно указать логин своего аккаунта

Как подключить кеширование в CMS?

Что у Memcached, что у Redis модель настройки одинаковая. Поэтому рассмотрим наиболее популярные CMS и подключение в них кеширования.

В Wordpress нет встроенных механизмов подключения к кеширующему серверу, поэтому нужно использовать специальный плагин, например, W3 Total Cache. Он подходит и для Redis, и для Memcached.

Настройка подобного плагина зависит от сайта, единого алгоритма не существует, но есть два общих пункта, которые стоит выполнить для любых проектов: включить кеширование страниц (Page cache) и запросов к базе данных (Database cache). Когда плагин установится, в боковом меню появится пункт Performance. В нем будут General Settings, а еще дальше — блок Page cache. Там нужно включить кеширование (Enable) и выбрать метод — Memcached или Redis, в зависимости от того, что вы используете. То же самое нужно провернуть в блоке Database cache.

У Redis, соответственно, должно быть Redis<br />
У Redis, соответственно, должно быть Redis

В Cache Preload нужно указать интервал очистки на 86400 секунд (сутки).

О сервисах кеширования

В блоке Advance нужно указать путь до сокета (Memcached hostname или redis hostname) и максимальный срок существования объектов в кеше на 21600 секунд (6 часов). Проверьте правильность пути до сокета, нажав на кнопку «Test» рядом.

В Joomla! можно включить Memcached или Redis в разделе «Система» административной части сайта. Там же настраивается кеширование.

В старых версиях Joomla! ниже 2.5 нужно еще добавить строки в конфигурационном файле:

public $memcache_server_host = 'unix:///home/login/tmp/memcached.sock';

public $memcache_server_port = '0';

Путь также может отличаться на разных хостингах. У нас вместо login нужно указать логин своего аккаунта.

Особых сложностей установка Memcache и Redis не должна вызвать, а пользы от сервисов огромная. Но если все-таки какие-то вопросы появятся, всегда можно обратиться к подробным инструкциям в нашей Базе знаний или просто обратиться в поддержку.

Подключайте кеширование и смотрите, как летают ваши сайты!

33
Начать дискуссию