当页面是动态的内容,那么必须谨慎考虑你的缓存和缓存时间。 比如说,你的网站首页通常不会更新得太快,那么可以将其缓存一个小时或者更多,以便加速其显示。 从另一方面讲,如果你的页面上有按秒来显示新内容的功能,那么该页面就不应该被缓存。

    配置缓存时间

    缓存可以通过设置 $caching为:Smarty::CACHING_LIFETIME_CURRENTSmarty::CACHING_LIFETIME_SAVED来开启。


    Example 15.1. 开启缓存

    开启了缓存,调用display('index.tpl') 会正常渲染模板,但也会保存一份输出的内容到$cache_dir目录下的文件中(缓存副本)。在下一次调用,缓存文件会替代渲染模板的过程。

    在下的文件,文件名与模板名称相似。虽然这些文件也有.php 后缀,但它们不会被直接执行。请不要编辑这些文件!


    Example 15.2. 为每个缓存设置$cache_lifetime

    当开启的时候(默认开启),每个模板文件和配置文件都会在缓存检查的时候执行编译检查。如果这些文件在缓存生成后被修改,那么缓存会马上重新生成。 这是一个覆盖的选项,所以更好的性能建议把$compile_check设置成false。


    Example 15.3. 关闭 $compile_check

    如果开启了,缓存文件将总是会重新生成。效果和关闭缓存是一样的,而且还会降低性能。 一般用于 调试的目的。更确当的方式是把缓存设置成Smarty::CACHING_OFF。

    isCached()函数可以检查模板的缓存是否存在。如果你的模板是需要读取某些数据(如数据库),那么你可以用它来跳过这个过程。

    你可以使用来设置页面上部分区块是动态的(不缓存),同样你也可以使用{insert}函数,或者nocache参数来达到同样目的。

    比如说我们希望把整个页面缓存,除了页面两边显示的banner广告。 那么我们可以用来显示banner广告, 这样就可以在缓存的内容里面,保存广告部分的动态效果。参见 {insert}的详细文档。

    你可以通过来删除全部缓存,或者用clearCache() 来删除特定的的缓存内容。


    Example 15.5. 删除缓存