ВведениеZend_Cache предназначен для кэширования любых данных. Управление кэшированием в Zend Framework производится через фронтэнды (интерфейсные части), записи кэша сохраняются через бэкэнды (адаптеры File, Sqlite, Memcache и др.), с использованием гибкой системы идентификаторов и тегов, благодаря которым можно потом легко удалять определенные типы записей (например: "удалить все записи кэша, помеченные данным тегом"). Ядро модуля (Zend_Cache_Core) является гибким, универсальным и конфигурируемым. Кроме этого, для особых нужд есть фронтэнды, расширяющие Zend_Cache_Core: Output, File, Function и Class. Example #1 Получение фронтэнда с помощью Zend_Cache::factory() Zend_Cache::factory() инстанцирует нужные объекты и связывает их. В этом первом примере мы будем использовать фронтэнд Core с бэкэндом File.
Example #2 Кэширование результатов запросов к базе данных Теперь, имея фронтэнд, мы можем кэшировать любые типы данных, используя сериализацию. Например, мы можем кэшировать результат очень ресурсоемкого запроса к БД. После его добавления в кэш не нужно будет даже подключаться к базе данных: записи извлекаются из кэша и выполняется процедура, обратная сериализации.
Example #3 Кэширование вывода с помощью фронтэнда Zend_Cache Мы размечаем участки, выходные данные которых хотим поместить в кэш, добавлением условной логики, окружая участок методами start() и end(). Этот пример похож на первый и является основной стратегией кэширования. Внутри выводим данные как обычно — весь вывод будет добавлен в кэш, когда будет достигнут метод end(). При следующем запуске весь участок кода будет пропущен, вместо этого извлекаются данные из кэша (до тех пор, пока записи действительны).
Обратите внимание, что мы выводим результат time() дважды - это демонстрация на примере динамических данных. Попробуйте запустить это и обновить страницу несколько раз, и вы заметите, что первое число не изменяется, в то время как второе меняется в зависимости от текущего времени. Это потому, что первое число было выведено в кэшируемой части и сохранено среди других выходных данных. После того, как пройдет полминуты (мы установили время жизни кэша равным 30 секундам) числа снова должны стать одинаковыми, так как срок действия кэша истек, сразу после этого производится новое сохранение в кэш.
|