Модуль кэширования
Это просто мои дилетантские рассуждения на тему модуля кэширования.
Предполагается использовать кэш в 3 разных вариантах:
- Запросы
- Блоки
- HTML страницы
Кэш на уровне запросов должен записывать рзультат запроса в свойство объекта и по уничтожению объекта это свойство объекта записывать на диск. При создании нового объекта, кэш должен в свойство объекта читаться из файла. Предполагается, что за весь период работы приложения у нас существует только 1 объект кэша.
Кэш на уровне блоков может использоваться сторонними плагинами. Если плагин совершает какие-то "тяжелые" вычисления и возвращает как правило одинаковые данные всегда, то рационально весь блок закешировать и в плагине предусмотреть несколько методов для работы с кэшем на уровне блоков.
Кэш на уровне HTML страниц нужен чисто из-за соображений настроек, т.е. логика определяет какие url обрабатывать, а какие нет; кому отдавать кэш, а кому нет и др.
По сути все 3 варианта кэширования имеют одни общие действия:
- Взять из кэша
- Записать в кэш
- Удалить кэш по ключу
- Очистить весь кэш
Но также для каждого конкретного вида кэширования используется специфичная логика и пути хранения кэша, например:
.../cache/sql/...
.../cache/block/...
.../cache/html/...
При таком варианте может существовать основной класс Cache и соответсвенно 3 дочерних от него класса, которые расширяют/перекрывают функционал основного класса. Т.е. вся специфичная логика.
В моей теории такая вот модель.
ordPress
блог AlexPTS