31.10.2009, 21:29
общий
это ответ
Здравствуйте, Dima1967.
Советник F®ost меня опередил - я сам хотел предложить этот вариант, потому как использую его очень активно - и он помогает, реально ускоряет работу сайта.
Что касается хранилища, то на этот счет у Zend_Cache существуют адаптеры. Самый простой случай - файл в виде хранилища.
Чтобы кэшировать предложенный Вами запрос, нужно:
а) один раз его выполнить посредством обращения к базе данных;
б) результат выполнения запроса сериализовать(с помощью функции serialize);
в) сохранить результат в сессии или в файловой системе Вашего сервера с уникальным идентификатором, которому в соответствие можно поставить Ваш запрос.
После сохранения результата запроса в кэше алгоритм действий такой: проверяете наличие чего-либо в кэше под уникальным идентификатором, и если кэш по каким-либо причинам пуст(например, устарел и очистился) или просто устарел и его данные более не актуальны, выполняете обращение к базе данных, после чего сохраняете результат в кэше под новым идентификатором. Если же в кэше есть актуальные данные, выдергиваете их, выполняете их десериализацию с помощью функции unserialize, и подставляете в свой код. Все довольно просто. В Zend Framework кэширование осуществляется по такому принципу, и я Вам, по сути, рассказал, как оно там происходит. Но оно правильно происходит, и нет особого смысла огород городить! С помощью Zend_Cache Вы можете кэшировать любые данные. И весь остальной фреймворк использовать для этого, по-видимому, не обязательно, хотя я и не пробовал, потому что я как раз использую весь ZF.
Если Вы решаете писать все это удовольствие самостоятельно, сначала определитесь, где и как будете хранить кэш, потом напишите функции сохранения и получения данных в/из кэш(а), ну и наконец, функцию проверки актуальности и наличия данных кэша.
С уважением, Товарищ Бородин