База знаний

Инструкции и ответы на вопросы о хостинге, работе сайтов и приложений

Кеширование Memcached

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

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

Активируйте модуль в Панели управления.  Для этого кликните на баланс аккаунта в правом верхнем углу, после чего перейдите в раздел «Дополнительные услуги» и выберите объем памяти. Определить подходящий размер кеша можно опытным путем: воспользуйтесь проверочным скриптом.

В скрипте, который подключается к кеширующему серверу, укажите путь до сокета:

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

Сайты на популярных CMS тоже могут работать с Memcached. Рассмотрим процесс настройки для проектов, созданных с помощью Wordpress, Joomla! и 1C-Битрикс.

WordPress

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

Настройка плагина зависит от сайта: не существует алгоритма, который подошел бы каждому проекту. В общем случае рекомендуем включить кеширование страниц (Page cache) и запросов к базе данных (Database cache).

После установки плагина в боковом меню появится пункт «Performance». Перейдите в раздел «General Settings» и найдите блок «Page cache». Включите кеширование (Enable) и в выпадающем списке выберите метод — Memcached. Нажмите «Save all settings».

Выполните те же действия в блоке «Database cache».

В боковом меню перейдите в раздел «Page cache». Если на сайте доступна регистрация пользователей, отключите опцию «Don't cache pages for logged in users». Нажмите «Save all settings».

В блоке «Cache Preload» установите интервал очистки кеша — 86400 секунд (сутки). Сохраните изменения.

Перейдите к блоку «Advanced». В строке «Memcached hostname» укажите путь до сокета memcached и нажмите «Test». Сокет указан корректно, если в результате получено значение «Test passed».

В строке «Maximum lifetime of cache objects» установите время — 21600 секунд (6 часов). Опуститесь в нижнюю часть страницы и нажмите «Save all settings».

Перейдите в раздел «Database cache» и в строке «Memcached hostname» укажите путь до сокета memcached. Сохраните изменения.

Плагин настроен.

Joomla!

CMS Joomla! поддерживает работу с Memcached по умолчанию.

Чтобы включить кеширование, авторизуйтесь в административной части сайта и перейдите в раздел «Система» → «Общие настройки», вкладка «Система».

В блоке «Настройка кэша» укажите параметры, как на скриншоте. В поле «Сервер Memcache(d)» введите путь до сокета:

Сайт настроен для работы с Memcached.

Для настройки старых версий Joomla! (ниже 2.5) добавьте в конфигурационный файл configuration.php строки: public $memcache_server_host = 'unix:///home/login/tmp/memcached.sock';
public $memcache_server_port = '0';
«login» замените на логин вашего аккаунта хостинга.

1С-Битрикс

Чтобы подключить к Memcached сайт на CMS 1С-Битрикс, создайте в каталоге ~/public_html/bitrix файл .settings_extra.php и добавьте в него инструкции:

<?php
return array (
    'cache' => array(
      'value' => array (
        'type' => 'memcache',
        'memcache' => array(
         'host' => 'unix:///home/login/tmp/memcached.sock',
         'port' => '0'
       ),
        'sid' => $_SERVER["DOCUMENT_ROOT"]."login"
      ),
   ),
);


В административной части сайта перейдите в раздел «Настройки» → «Производительность» → «Панель производительности», вкладка «Битрикс (оптимально)», и проверьте, указано ли значение «memcache» в пункте «Хранение кеша».

Вернитесь в раздел «Аккаунт» → «Услуги» Панели управления хостинга и перезагрузите Memcache.

Проверка работы Memcached

Проверьте корректность настроек с помощью специального скрипта.

В корневом каталоге сайта создайте файл memcache.php и поместите в него следующий код.

<?php
$memcache_obj = new Memcache;
$memcache_obj->addServer('unix:///home/login/tmp/memcached.sock', 0);
$status = $memcache_obj->getStats();
$MBUsed= (real)$status["bytes"]/(1024*1024);
$MBSize=(real) $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>

В строке: $memcache_obj->addServer('unix:///home/login/tmp/memcached.sock', 0); замените «login» на логин вашего аккаунта хостинга. Сохраните изменения.

Обратитесь к скрипту из браузера по ссылке: http://domain.ru/memcache.php , где domain.ru — доменное имя сайта.

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

Была ли эта инструкция полезной?