据我了解,当你在smarty,smarty缓存编译模板时打开缓存。然后,这些编译的模板可用于加速页面的呈现。在这样的智能应用程序之上运行自己的缓存级别不是一个好主意。
if(a cache for this page exists){
-Don't run my application, don't include my files don't instantiate my classes.
-Send the cached version of this page to the user
-end the script here
}else{//if the cache for this page does not exist or is not current
- run my application as usual
-save all the output to a file for next time
}
每当我网站上发生更新此页面内容的事情时,例如管理员对网站内容进行更改就会删除缓存文件。我觉得我必须在这里遗漏一些东西。这个方法允许我存储每个页面的所有html版本,并在它有效时发送。这似乎会大大提高我网站的速度。
编辑:好的,所以我发现smarty确实存储了我的网站的html版本。如果缓存是最新的,则如果我的应用程序的其余部分运行,如何阻止我的应用程序运行。我是否首先包含并实例化smarty并执行类似
的操作if($smarty->usingcache())[
exit;
}
答案 0 :(得分:1)
如果您的网站是静态的,这将有效。但在那种情况下,你不需要Smarty ......
假设您更新了数据库中的记录。然后,您站点中包含直接或间接受更新影响的输出的所有页面都必须无效。你怎么知道哪些页面无效?
答案 1 :(得分:1)
在进行某些特定于请求的处理之前,您怎么知道页面的外观?在检查客户端的身份验证状态之前,执行一些数据库查询(或获取的缓存结果)以获取最新信息,您无法知道最近呈现的页面是否与此次呈现的页面相同。 Smarty用这个策略解决了这个问题:
默认情况下,Smarty使用文件系统进行缓存,但缓存策略与任何键值存储兼容。事实上,其他商店也存在插件,例如memcached的this one。