smarty是一个非常优秀的PHP模板引擎,在初期的使用过程中,它的缓存机制最使我乐心。
根据需要,我个人继承并改写了一下smarty,以便自己使用更加方便,下面是自定义的smarty类:
smarty的function display($resource_name, $cache_id = null, $compile_id = null)可以根据开发者需要,渲染出对应的缓存文件。
如渲染主页我们经常这么写:display("index.html")
渲染出某条信息可能这么写:display("show.html", 13)
同时,smarty也提供了一个清除缓存的function(实质是使缓存文件过期,并非删除缓存文件)
我们发现可以使用:
- function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null)删除某个具体的模板。如主页,某条信息。
- function clear_all_cache($exp_time = null)删除缓存目录下所有所有缓存信息。
然而很多人,也包括我,一开始对怎么清理所有内容页(即show.php?id=1 .... 198 ....)的所有缓存文件产生了疑问。clear_cache()显然不适用,而clear_all_cache呢?似乎后者会把index.php等其它页面的缓存文件也清除。
在这里提提大家,看到我对function clear_all_cache()划线部分的标注。 clear_all_cache是把缓存目录下的所有文件清理掉。所以如果我们把show.php?id=1....134...的缓存文件都放在一个show的目录下,在执行clear_all_cache的时候,先设置cache_dir的路径为show,似乎一切就可行了,而事实上也是这样。
如我在项目中的一个使用:
渲染模板到show目录下:
清理show目录下的缓存: