Перейти к содержанию

Кеширование

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

Выбор хранилища

Очевидно, что скорость получения данных из кеша напрямую зависит от скорости работы хранилища кеша. Модуль TeleCart умеет работать с двумя хранилищами — MySQL и Redis. По умолчанию модуль использует MySQL в качестве хранилища, однако, если на сервере установлен Redis, рекомендуется использовать именно его. Благодаря специфике Redis как хранилища данных он позволяет достичь наибольшей скорости работы витрины TeleCart.

MySQL

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

Redis

Переключить драйвер кеша TeleCart на использование Redis можно задав переменную окружения TELECART_CACHE_DRIVER=redis. Это можно сделать задав в окружении Linux эту переменную, чтобы PHP процесс имел к ней доступ через getenv. Либо, что проще, создать файл .env с нужным значением.

Step-by-step инструкция:

  1. Подключиться к серверу по SSH и перейти в директорию upload , в которую установлен OpenCart (там где находятся admin, catalog, system).
  2. Перейти по пути system/library/oc_telegram_shop и убедиться что в ней находится файл TeleCart модуля - oc_telegram_shop.phar.
  3. Рядом с oc_telegram_shop.phar создать файл .env и прописать в нём следующие переменные окружения:

    TELECART_CACHE_DRIVER=redis
    TELECART_REDIS_HOST=127.0.0.1
    TELECART_REDIS_PORT=6379
    TELECART_REDIS_DATABASE=0
    

    Значения TELECART_REDIS_HOST, TELECART_REDIS_PORT и TELECART_REDIS_DATABASE будут зависеть от того, как настроен конкретно ваш инстанс Redis.

  4. Зайти в настройки TeleCart модуля и убедиться, что в системной информации, в качестве драйвера кеша действительно используется redis.

    Кнопка просмотра системной информации в модуле TeleCart

    Кнопка просмотра системной информации в модуле TeleCart.

    Redis драйвер кеша для TeleCart

    Redis драйвер кеша для TeleCart

Сброс кеша

Разные части витрины TeleCart имеют разный TTL кеша. Из этого следует, что данные в кеше со временем устаревают. Модуль TeleCart имеет продвинутую систему кеширования и автоматически производит инвалидацию (сброс) кеша. В большинстве случаев никаких дополнительных действий от пользователя не требуется. Однако в некоторых ситуациях может понадобиться принудительный сброс кеша раньше, чем произойдёт его автоматическая инвалидация.

Информация

Сброс кеша в TeleCart никак не связан с кешем OpenCart. Кеш TeleCart реализован как отдельный механизм для достижения максимальной эффективности.

Сброс через UI

В административной панели предусмотрена сервисная кнопка для принудительного ручного сброса кеша.

Кнопка ручного сброса кеша в настройках модуля TeleCart

Кнопка ручного сброса кеша в настройках модуля TeleCart

При нажатии на кнопку кеш будет сброшен, а пользователь увидит всплывающее уведомление об успешном выполнении операции.

Сброс через CLI

В некоторых случаях может быть полезна возможность сброса кеша через CLI-терминал. Это удобно, когда требуется сбрасывать кеш по расписанию (например, по CRON раз в сутки) либо выполнять сброс после завершения других процессов (например, после процедуры импорта новых товаров в OpenCart). Для этого предусмотрена специальная CLI-команда TeleCart, которую можно запускать вручную через терминал или вызывать из другой программы.

php ./system/library/oc_telegram_shop/cli.php cache:clear

Подробнее о запуске консольных TeleCart CLI команд.