Php шаблон кэширования дизайн - PullRequest
1 голос
/ 04 марта 2010

Я хочу включить кэширование в дизайн своего приложения. Шаблоны кеширования для начинающих.

Дизайн, который я использовал до сих пор, очень модульный. Я создал реализацию ORM для всех

мои таблицы и каждая таблица представлена ​​соответствующим классом.

Все запросы обрабатываются одним контроллером, который направляет их в соответствующие функции веб-метода.

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

Что я имею в виду для кэширования, включает реализацию отдельного класса Cache для обработки кэширования с помощью

гибкость для хранения в файлах, apc или memcache. Сейчас я тестирую с кэшированием файлов.

Некоторые мысли

  1. Стоит ли включать логику проверки кэшированных версий в класс Template или

в веб-методах, которые обрабатывают входящие запросы и которые в конечном итоге вызывают класс Template.

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

дополнительный аргумент (загружать из кеша или нет).

Однако во втором случае я подумываю немедленно проверить кэшированную версию в веб-методе и, если найден, вернуть ее. Это сохранит всю выполненную обработку, пока логика не достигнет шаблона (в первом случае senario).

Однако оба senarios полагаются на точный механизм аннулирования кэшей, что приводит к

  1. Недействительные кэши

    Как я вижу (и вы можете свободно добавлять свои данные), кэшированный файл шаблона становится недействительным, если:

    а. истек срок действия, достигнут.

    б. Сам файл шаблона обновляется (т.е. разработчиком при добавлении новой строки)

    с. веб-метод, который обрабатывает изменения запроса (т.е. разработчик добавляет / удаляет что-то в коде)

    д. содержимое, поступающее из БД и оканчивающееся в файле шаблона, изменяется

    Я думаю о сохранении закодированного массива json внутри кэшированного файла. Первым значением будет метка времени истечения срока действия кэша. Второе значение будет временем модификации php-файла с кодом, обрабатывающим запрос (чтобы справиться с опцией c выше) Третьим будет сам контент

    Процесс проверки, который я рассматриваю, в соответствии с приведенными выше сенариями:

    а. Если срок действия кэшированного файла (сохраненного в массиве) достигнут, удалите файл кэша

    б. если время модификации кэшированного файла меньше, чем время модификации скелетного файла шаблона, удалите кэшированный файл

    с. если время модификации файла php выше, чем то, которое хранится в кэше, удалите кэшированный файл.

    д. Это сложно. В реализации ORM я добавил обработчики событий (которые запускаются при добавлении, обновлении, удалении объектов). Я мог бы удалить файл кэша каждый раз, когда объект, который предоставляет содержимое в шаблон, изменяется.

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

    Возьмите этот пример, у пользователя есть страница с коротким профилем и страница с полным профилем (2 шаблона)

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

    шаблоны или кэшированные файлы соответствуют Пользователю, поэтому эти файлы могут быть удалены. Я мог бы хранить их в БД, но я

    ищет подход к бетеру

1 Ответ

0 голосов
/ 04 марта 2010

Посмотрите на Zend_Cache:

Он предоставляет Backends для использования с рядом систем кэширования, среди которых APC и memcached. Он также обеспечивает полное и частичное кэширование страниц, а также кэширование вызовов функций и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...