При разработке веб приложений, необходимо не забывать уделять должное внимание кешированию как данных, так и участки сгенерированого HTML.
Код, отвечающий за кеширование участка представления в Zend Framework’е, выглядит приблизительно так:
[ some html skipped ] < ?php $id = "some_cache_id"; // if it is a cache miss, output buffering is triggered if ( !( $cache->start( $id ) ) ) { ?> [ some html skipped ] < ?php $cache->end(); } ?> [ some html skipped ]
Все отлично. Участок кешируется. Через указанный промежуток времени кеш обновляется. Но что делать, если мы изменили представление? Нужно либо ждать пока обновится кеш участка, либо обновить идентификатор кеша для этого участка. В первом случае это часто бывает недопустимо по причине необходимости моментального изменения, во втором – можно просто забыть, либо вы акуратист и не соглашаетесь с невразумительными именами типа «cache_page_num123″.
Вот для таких случаев нам поможет простой участок кода:
$id = "some_cache_id"; $id = md5( $id . filemtime( __FILE__ ) );
Теперь при каждом изменении файла, кеш будет автоматически обновляться при первом же обращении.
Единственное о чем остается думать – есть ли сборщик мусора в выбранном вами кеширующем механизме.
Если ресурс довольно нагружен а участок который кэшируется довольно сложен – стоит так же не забывать о эффекте кусающей собачки – но это уже совсем другая история.