В этой статье рассказывается о Memcached: что это за технология, для чего она нужна и как она влияет на производительность популярных CMS.
Зачем нужно кеширование данных?
Кеширование — это важный элемент оптимизации любого веб-проекта. По мере роста посещаемости сайта увеличиваются нагрузки на сервер и возрастает время генерации страниц. Кеширование помогает справляться с этими проблемами. Одним из популярных решений в этой области является Memcached.
Что такое Memcached?
Memcached — это программное обеспечение, предназначенное для кеширования данных в оперативной памяти с использованием хеш-таблиц. Иными словами, когда страница сайта создаётся, её содержимое сохраняется в оперативной памяти через Memcached. При следующем запросе к этой странице её не нужно генерировать заново — данные просто извлекаются из кеша, что позволяет экономить ресурсы сервера и ускоряет загрузку.
Особенности Memcached
Memcached изначально не поддерживает разделение данных и управление доступом. Это значит, что любой пользователь сервера может взаимодействовать с Memcached, включая модификацию или удаление данных. Хотя критически важные данные в Memcached обычно не хранят, такие возможности всё же могут негативно повлиять на работу сайта.
Подключение Memcached в CMS
Многие системы управления сайтом (CMS) поддерживают работу с Memcached. В этой статье подробно описан процесс настройки Memcached для наиболее популярных CMS, а также проведено нагрузочное тестирование для оценки улучшений производительности.
Для тестирования использовалась утилита siege, а продолжительность каждого теста составляла 5 минут.
Настройка Memcached в WordPress
Для интеграции Memcached в WordPress необходимо установить и настроить плагин. Пошаговая инструкция:
1. Перейдите в административную панель сайта (например, http://site.ru/wp-admin/).
2. В разделе "Плагины" выберите пункт "Добавить новый".
3. В строке поиска введите WP-FFPC и нажмите *Enter*.
4. Установите найденный плагин, нажав "Установить", а затем активируйте его.
5. Перейдите в настройки плагина и выберите подходящий тип PHP-расширения:
- Memcache для версий PHP 7.2 и ниже.
- Memcached для PHP 7.3 и выше.
6. Сохраните настройки, после чего в верхней части страницы появится сообщение об успешной интеграции Memcached.
Дополнительно в настройках плагина можно указать логин и пароль для подключения, но это не требуется, так как доступ к Memcached предоставляется только из вашего аккаунта.
Включение кеширования
Чтобы активировать кеширование, необходимо добавить следующую директиву в конфигурационный файл WordPress wp-config.php:
define('WP_CACHE', true);
Редактировать файл можно через SSH (например, с помощью утилиты PuTTY) или через файловый менеджер в Панели управления хостингом.
Теперь Memcached настроен и готов к использованию. Это поможет значительно ускорить работу сайта и уменьшить нагрузку на сервер.
Финальные шаги настройки Memcached
После завершения настройки сайт начнёт использовать систему кеширования Memcached.
Корректировка параметров кеширования
При необходимости можно изменить параметры кеширования в настройках установленного плагина, например, задать время хранения кеша для определённых элементов сайта.
Ключ кеширования:
По умолчанию ключ для кеширования выглядит следующим образом:
$scheme://$host$request_uri
Где:
- $scheme — тип соединения (http или https),
- $host — доменное имя сайта,
- $request_uri — запрашиваемая страница сайта.
Например, URL вида `http://site.ru/category/innovaciya/`.
Исключения для кеширования:
На вкладке "Cache exceptions" можно задать правила исключения, такие как:
- кеширование для авторизованных пользователей (по умолчанию выключено);
- исключение кеширования для:
- главной страницы (Exclude home),
- лент новостей (Exclude feeds),
- архивов (Exclude archives),
- страниц (Exclude pages),
- отдельных записей (Exclude singulars),
- динамических запросов (Dynamic requests) — включено по умолчанию;
- отключение кеширования страниц, начинающихся с `/wp-` (по умолчанию отключено).
Результаты тестирования производительности
Для оценки влияния Memcached на производительность сайта использовалась утилита siege. Тесты проводились в течение 5 минут.
Результаты без Memcached:
- Transactions: 7258 запросов
- Response time: 0.49 сек
- Transaction rate: 20.17 запросов/сек
- Throughput: 0.23 МБ/сек
Результаты с включённым Memcached:
- Transactions: 11518 запросов
- Response time: 0.12 сек
- Transaction rate: 32.06 запросов/сек
- Throughput: 0.36 МБ/сек
После включения Memcached сервер стал обрабатывать запросы быстрее, а время отклика сократилось в четыре раза. Это значительно повысило производительность сайта, снизив нагрузку на сервер и ускорив загрузку страниц.
Теперь ваш сайт готов к стабильной работе даже при увеличении посещаемости.
Joomla! и Memcached
В Joomla! поддержка Memcached встроена по умолчанию, и её нужно лишь активировать.
Шаги настройки:
1. Войдите в панель управления сайтом (по умолчанию: `http://site.ru/administrator/`).
2. Перейдите в раздел Сайт → Общие настройки.
3. Выберите вкладку Система.
4. В настройках кеширования укажите следующие параметры:
- Кеш: Стандартное кеширование,
- Обработчик кеширования: Memcache.
5. Нажмите кнопку Сохранить в верхней части страницы.
Теперь сайт настроен для работы с Memcached.
Результаты тестирования Joomla!
Без Memcached:
- Transactions: 11431
- Response time: 0.13 сек
- Transaction rate: 31.79 запросов/сек
С Memcached:
- Transactions: 12203
- Response time: 0.09 сек
- Transaction rate: 33.97 запросов/сек
Время ответа сервера снизилось с 0.13 до 0.09 секунд. Разница может казаться незначительной, но при увеличении нагрузки на сайт эффект будет более заметен.
Drupal и Memcached
Установка Memcached для Drupal:
1. Подключитесь к серверу через SSH (например, с помощью утилиты PuTTY).
2. Перейдите в корневую директорию вашего сайта:
cd /home/t/testtomas1/test123123.ru/public_html
3. Установите модуль Memcached командой:
drush dl memcache
После успешной установки появится сообщение:
Project memcache (7.x-1.5) downloaded to /sites/all/modules/memcache.
4. Добавьте следующие строки в файл конфигурации `./sites/default/settings.php`:
$conf['cache_backends'][] = 'sites/all/modules/memcache/memcache.inc';
$conf['cache_default_class'] = 'MemCacheDrupal';
$conf['lock_inc'] = 'sites/all/modules/memcache/memcache-lock.inc';
5. Сохраните изменения в файле.
Активация модуля:
1. Зайдите в административную панель сайта: `http://site.ru/admin`.
2. Перейдите в раздел Модули.
3. Найдите модуль Memcached, установите флажок для его активации и нажмите Сохранить.
Теперь Drupal настроен для использования Memcached.
езультаты тестирования Drupal
Без Memcached:
- Transactions: 4501
- Response time: 1.09 сек
- Transaction rate: 12.51 запросов/сек
С Memcached:
- Transactions: 5894
- Response time: 0.72 сек
- Transaction rate: 16.39 запросов/сек
Использование Memcached увеличило производительность на 30%, снизив время отклика с 1.09 до 0.72 секунд.
Настройка Memcached в Joomla! и Drupal позволяет значительно улучшить производительность сайтов, особенно при увеличении посещаемости или добавлении нового контента. Memcached сокращает время отклика сервера и повышает скорость загрузки страниц, что положительно сказывается на пользовательском опыте.
Bitrix и Memcached
Для подключения кеширования через Memcached в CMS Bitrix необходимо отредактировать соответствующие конфигурационные файлы в зависимости от версии ядра.
1. Определение версии ядра Bitrix
Версию ядра можно узнать в административной панели сайта, по умолчанию по следующему адресу:
- http://site.ru/bitrix/admin/index.php.
2. Редактирование конфигурационных файлов
- Для версии ядра ниже 14.0: необходимо отредактировать файл `./bitrix/php_interface/dbconn.php`.
- Для версии ядра 14.0 и выше: редактируется файл `./bitrix/.settings_extra.php`. Если этого файла нет, его нужно создать.
3. Настройка Memcached
Если версия ядра ниже 14.0, добавьте в файл `./bitrix/php_interface/dbconn.php` следующие строки:
define("BX_CACHE_TYPE", "memcache");
define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01");
define("BX_MEMCACHE_HOST", "127.0.0.1");
Если версия ядра 14.0 и выше, добавьте в файл `./bitrix/.settings_extra.php` следующие строки:
<?php
return array(
'cache' => array(
'value' => array (
'type' => 'memcache',
'memcache' => array(
'host' => '127.0.0.1',
'port' => '11211'
),
'sid' => $_SERVER["DOCUMENT_ROOT"]."#01"
),
),
);
?>
После внесения изменений сохраните файл.
4. Проверка настройки Memcached
Чтобы убедиться, что сайт использует Memcached, перейдите в административную панель сайта и выполните следующие шаги:
1. Откройте Настройки.
2. Перейдите в раздел Панель производительности.
3. В настройках кеширования должно быть указано Memcache.
Теперь сайт настроен для использования Memcached.
Результаты тестирования производительности Bitrix
Без Memcached:
- Transactions: 13383
- Response time: 0.07 сек
- Transaction rate: 37.20 запросов/сек
С Memcached:
- Transactions: 13587
- Response time: 0.03 сек
- Transaction rate: 37.78 запросов/сек
Как видно из результатов тестирования, использование Memcached снижает время ответа сервера с 0.07 до 0.03 секунд, что позволяет ускорить процесс генерации страниц. Это особенно важно при увеличении объёма контента и числа посетителей. Даже на тестовом сайте без контента мы видим заметное улучшение производительности, и с увеличением нагрузки этот эффект будет ещё более выражен.
Таким образом, интеграция Memcached в Bitrix значительно ускоряет работу сайта и улучшает производительность, особенно на популярных и нагруженных ресурсах.
Настройка Memcached для Webasyst
Для интеграции Memcached с платформой Webasyst выполните следующие шаги:
1. Создание файла конфигурации
В каталоге сайта создайте файл `wa-config/cache.php` со следующим содержимым:
<?php
return array(
'default' => array(
'type' => 'memcached',
'servers' => array(
array(
'host' => 'localhost',
'port' => 11211,
),
)
)
);
Этот файл указывает системе использовать Memcached для хранения кеша, подключаясь к локальному серверу Memcached на порту 11211.
2. Проверка работоспособности Memcached
Чтобы убедиться, что Memcached работает, создайте в корне сайта файл, например, `check_memcached.php`, со следующим кодом:
<?php
$cache = new Memcached();
$cache->addServer('localhost', 11211);
echo '<pre>';
var_dump($cache->getAllKeys());
echo '</pre>';
При обращении к этому файлу через браузер (`http://site.ru/check_memcached.php`) будут выведены все ключи данных, которые на данный момент хранятся в Memcached.
Если Memcached настроен корректно, вы увидите список текущих ключей кеша. Если список пуст, это может означать, что кеширование пока не используется или что данные ещё не записаны в Memcached.
Интеграция Memcached позволяет значительно ускорить работу Webasyst, особенно при высокой посещаемости и большом количестве данных, снижая нагрузку на сервер за счёт кэширования.