Создание кастомного адаптера кэширования в OpenCart

Создание кастомного адаптера кэширования в OpenCart

От автора: неважно в каком фреймворке вы работаете, кэширование – важный инструмент улучшения общей производительности сайта, который полезно иметь при себе. Механизмы кэширования бывают разные: файловое, APC, Memcached и т.д. Вы можете выбрать подходящий способ, исходя из требований. Иногда для достижения желанного результата необходимо использовать несколько адаптеров.

В OpenCart кэширование происходит с помощью нескольких, уже встроенных в ядро, адаптеров. Их можно использовать в качестве шаблона для создания кастомного адаптера. Для создания кастомного адаптера необходимо создать методы на контракт и подключить свою логику в них, и все! Новый адаптер будет автоматически подхватываться, как часть механизма кэширования OpenCart.

Во всех адаптерах кэширования реализован базовый механизм хранения и получения измененных данных. Точно так же будет работать наш кастомный адаптер кэширования базы данных. Именно поэтому нам необходимо создать кастомную схему для хранения кэшированных данных.

Установите последнюю версию OpenCart, прежде чем приступить к созданию кастомного адаптера.

Создание схемы адаптера

Наши кэшированные данные будут храниться в MySQL таблице dbcache. Давайте создадим ее.

Здесь важно отметить префикс базы данных. Если не использовать его, необходимо использовать соответствующее название таблицы. Например, если префикс базы данных oc_, то таблица должна называться oc_dbcache.

В остальном структура таблицы довольно проста. В ней всего три столбца — key, value и expire. В колонке key хранится ключ кэширования, в колонке value – соответствующее значение. Колонка expire хранит слепок времени UNIX.

Создание файла адаптера

Все адаптеры кэширования OpenCart лежат в папке system\library\cache. Там должен располагаться и наш кастомный адаптер. Создадим файл system\library\cache\database.php со следующим кодом.

По схеме именования класс Database определен в пространстве имен Cache. В классе два свойства $_db и $expire. В $_db хранится объект базы данных. $expire задает время жизни кэша, когда класс инициализирован. Свойство $_db объявлено статичным потому, что оно хранит объект вида singleton.

В конструкторе класса мы устанавливаем время кэширования, которое передается из OpenCart в свойство $expire и вызывает метод initDbInstance, определенный в том же классе, который создает и присваивает объект базы данных свойству $_db, если объект ранее не создан.

Далее метод get получает запись кэша по ключу и времени устаревания, а метод set вставляет новую запись о кэшировании в базу данных. Кроме того, в методе set мы создаем серию кэша для правильного хранения. В методе get перед возвращением значения необходимо проводить десериализацию.

И наконец, есть метод delete, удаляющий записи из базы данных. Интересно отметить, что метод set вызывает delete каждый раз, чтобы проверить таблица на дубликаты!

С созданием файла адаптера кэширования закончили. В следующем разделе мы узнаем, как его подключить в ядро OpenCart.

Подключение кастомного адаптера кэширования

К сожалению, у адаптера нет back end части, с помощью которой его можно было бы подключить. Поэтому в рамках этого урока мы подключим его напрямую в ядро.

Откройте файл index.php в корне сайта. Найдите код.

Замените на:

Как видите, мы просто заменили аргумент, или, скорее, название адаптера, передаваемого при создании объекта $cache.

То же самое сделайте в файле index.php в папке admin. После этого front end и back end будут использовать наш кастомный адаптер кэширования.

Почти закончили! Откройте пару страниц на front end и back end. Таблица dbcache должна быть заполнена новыми записями!

Точно так же можно создать адаптер кэширования и для других движков хранения. Несмотря на простоту примера в этом уроке, думаю, что концепция будет важна для вашего кастомного адаптера.

Заключение

Сегодня мы обсудили, как создать кастомный адаптер кэширования в OpenCart. В процессе демонстрации был создан адаптер кэширования базы данных.

Автор: Sajal Soni

Источник: //code.tutsplus.com/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

Комментарии Вконтакте: