07月
18
浅谈Smarty缓存
文章分类:PHP 查看次数:495 + 121
之前使用Smarty是想都没想,反正听说她很好,有缓存,又能编译,运行起来多少多少快啦,代码程序分离啦,提高效率啦等等。所以一股脑儿照着写就是了,但是现在回过头来仔细想想,还是有不少问题。
比如,同样的一个页面,当传递的参数不一样时,就像test.php?id=1,如果id变为2,那么缓存会变成什么样,是变成2个缓存文件还是只有一个?
这个问题的答案是这样的,如果直接display('test.tpl'),那么缓存只有一个,而且当id变为2时,缓存不更新,因为缓存更新的前提是模板或者配置文件的改变。那如果要为每一个参数生成一个缓存呢,也很简单,只需加入第二个参数,比如display('test.tpl','cache_id'),这里的cache_id就是传递过来的参数,这样就相当于执行了查询缓存。(所以如果数据库很庞大的话,缓存也会很庞大)
以前做网站的时候也遇到过这样的问题,就是基于Smarty的网页,如果更新控制层的php文件而不是模板文件,并且已启用了缓存,那么缓存的页面是不会更新的。如果不使用缓存,那么改变控制层的php文件时,并不更新编译文件而是直接读取目标php文件。
不知道这么说清不清楚,其实只要自己做一下实验就行了,改变控制层的php文件,然后观察编译文件和缓存文件的修改时间,就很明了了。
相关文章
评论
共2 条评论 to “浅谈Smarty缓存”
发表评论

smarty是基于文件的缓存.
不会比生成静态文件更好吧?我是这么想的.
另外,更好的缓存见这里
http://warran.blueidea.com/archives/2007/4803.shtml
[回复此评论]
如果修改不是很频繁的话,生成静态文件还是不错的。
memcached 听说过很久了,但是一直没尝试过,因为需要在linux下安装,而目前我还没有这个条件,所以......
PS:你果然很强啊,asp、php、c#、java、数据库、js都涉足。
[回复此评论]