Это просто мои дилетантские рассуждения на тему модуля кэширования.

Предполагается использовать кэш в 3 разных вариантах:

  • Запросы
  • Блоки
  • HTML страницы

Кэш на уровне запросов должен записывать рзультат запроса в свойство объекта и по уничтожению объекта это свойство объекта записывать на диск. При создании нового объекта, кэш должен в свойство объекта читаться из файла. Предполагается, что за весь период работы приложения у нас существует только 1 объект кэша.

Кэш на уровне блоков может использоваться сторонними плагинами. Если плагин совершает какие-то "тяжелые" вычисления и возвращает как правило одинаковые данные всегда, то рационально весь блок закешировать и в плагине предусмотреть несколько методов для работы с кэшем на уровне блоков.

Кэш на уровне HTML страниц нужен чисто из-за соображений настроек, т.е. логика определяет какие url обрабатывать, а какие нет; кому отдавать кэш, а кому нет и др.

По сути все 3 варианта кэширования имеют одни общие действия:

  • Взять из кэша
  • Записать в кэш
  • Удалить кэш по ключу
  • Очистить весь кэш

Но также для каждого конкретного вида кэширования используется специфичная логика и пути хранения кэша, например:
.../cache/sql/...
.../cache/block/...
.../cache/html/...

При таком варианте может существовать основной класс Cache и соответсвенно 3 дочерних от него класса, которые расширяют/перекрывают функционал основного класса. Т.е. вся специфичная логика.

В моей теории такая вот модель.

Прочтите также: