Кеширование - эффективный способ повышения производительности веб-приложений. X-Cart применяет различные способы кеширования данных на разных уровнях системы. Чтобы максимально повысить производительность сайта, важно выбрать подходящий драйвер кеэширования.

Механизм кеширования в X-Cart:

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

Данная статья рассматривает кеширование только динамического содержимого (выборки товаров, фильтров, результатов расчётов и т.п.).

Настройка драйвера кеширования X-Cart

Чтобы выбрать драйвер кеширования вручную, установите опцию type в секции [cache] файла <X-Cart dir>/etc/config.php

; ----------------------
;  Cache settings
; ----------------------
;
[cache]
; Type of cache used. Can take auto, memcache, memcached, apc, xcache, file values.
type=file

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

При настройке кеширования следует принимать во внимание объём данных в магазине и посещаемость сайта. Кешируемое содержимое делится на общедоступное и частное:

  • Общедоступное содержимое - что видят все пользователи (списки категорий, оптовые цены, фильтры свойств товаров и т.п.).
  • Частное содержимое предназначено для конкретного пользователя (списки товаров, стоимость доставки, состояние корзины и т.п.). Например, списки товаров кешируются постраничной навигацией, группами пользователей, режимами сортировки и отображения. То есть объём частного содержимого зависит от посещаемости магазина.

Если в магазине очень много, сотни тысяч, товаров и категорий, кешированные данные могут занять всё свободное пространство, гигабайты. Кеширование не эффективно, если объём свободного пространства ограничен, т.к. X-Cart будет постоянно перепроверять одни и те же данные и не сможет их кешировать.

Ещё один важный вопрос - скорость отображения кешированного содержимого. Чтобы скорость работы магазина ощутимо возросла, механизм кеширования должен действовать достаточно быстро. Если механизм сложный и предусматривает удаление неиспользуемого кешированного содержимого, он работает медленнее, чем более простые механизмы. Получается, что кеширование не может быть одновременно быстрым и необъёмным .

Обзор возможностей драйвера кеширования

Если на сервере большой объём диска и SSD-накопителя, а в магазине меньше 100000 товаров, рекомендуется закешировать файловую систему, это самый быстрый способ. Что нужно сделать - настроить удаление периодическое удаление кеша в период наименьшей посещаемости сайта, например, в ночное время.

Если в магазине мало товаров или на сервере достаточно оперативной памяти, рекомендуется кеширование данных в оперативной памяти посредством memcached, т.к. у этого модуля есть встроенная функция удаления устаревших данных и он работает быстро при небольшом объёме данных. При небольшом объёме оперативной памяти настройте в memcached раздел подкачки.

Если в магазине миллион товаров, кеширование требует настройки вручную. Обратитесь к команде X-Cart, Кеширование файловой системыспециалисты разработают действенное решение.

Кеширование файловой системы

Кеширование файловой системы - самое простое решение, при котором кешированные данные упорядочены в файловой системе внутри X-Cart директории <X-Cart>/var/datacache.

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

На Unix сервере настройте регулярную задачу с помощью crontab:

0 * * * * find <X-Cart dir>/var/datacache/* -mmin +60 -exec rm {} \;

Задача в этом примере запускается ежечасно (в нулевую минуту каждого часа) и удаляет файлы, появившиеся более 60 минут назад.

Описание параметров команды find:

  • Первый аргумент - путь к файлам.
  • Второй аргумент означает возраст файла в минутах. Если установить значение +60, будут выбраны файлы старше 60 минут.
  • Третий аргумент отвечает за передачу команд, таких как rm.
  • Комбинация на конце необходима для завершения команды.

Подробнее о периодических задачах.

Memcached

Memcached - это бесплатный высокопроизводительный модуль с открытым кодом для кеширования данных. Модуль повышает производительность динамических веб-приложений за счёт снижения нагрузки на базу данных.

Memcached устанавливается как PHP модуль.

Для работы memcached в секции [cache] файла <X-Cart dir>/etc/config.php установите значение type=memcached и укажите список своих memcached серверов:

[cache]
; Type of cache used. Can take auto, memcache, memcached, apc, xcache, file values.
type=memcached
; Cache namespace
namespace=XLite
; List of memcache servers. Semicolon is used as a delimiter.
; Each server is specified with a host name and port number, divided
; by a colon. If the port is not specified, the default
; port 11211 is used.
servers=127.0.0.1