缓存通过保存其输出到一个文件而提高调用display()或fetch()的速度。如果调用时有可用缓存的版本,将显示该版本而不用重新生成输出。缓存可以大幅提高速度,特别是模板需要大量计算的时候。由于display()或fetch()的输出得到缓存,一个缓存文件可以基本上可以由若干个模板文件,配置文件等组成。
由于模板是动态的,因此缓存什么以及缓存多长时间是很重要的一个问题。例如,如果你显示你站点的首页,其内容不会经常更改,那么将该页面缓存一个小时甚至更长时间是可行的。另一方面,如果你要显示的页面包含一个时间表,每分钟都有新的信息,那么缓存该页面就没有任何意义。
激活缓存的第一步是设置$caching = 1(或2)。
一旦激活缓存,函数调用display('index.tpl')会按常规渲染该模板,同时保存其输出为一个文件(缓存拷贝)到$cache_dir中。下次调用display('index.tpl')时,将使用缓存的拷贝而不是重新渲染模板。
技术注解:$cache_dir中的文件命名类似于模板名。尽管它们的后缀是PHP,它们不应该直接被运行。也不要编辑这些文件!
每个缓存页面的有效时间都是有限的,并由$cache_lifetime决定。缺省值为3600秒,也即一个小时。该段时间过后,缓存将被重新生成。设置$caching=2时可以为每个缓存设置其各自的有效时间。参见$cache_lifetime以获得更多信息。
如果激活$compile_check,牵涉到缓存文件的每个模板文件和配置文件都会被检查是否修改。如果任何文件自缓存创建后被修改了,将立即重新生成缓存。对于优化性能而言,是小小的额外开销,所以可以考虑设置$compile_check为FALSE。
如果激活$force_compile,那么缓存文件总是会被重新生成,也就实际上关闭了缓存。$force_compile通常只用于调试的目的。关闭缓存更有效的方法是设置$caching = 0。
而is_cached()函数可以测试一个模板是否有合法的缓存。如果你有一个缓存的模板需要诸如数据库操作,那么可以跳过该步骤。
你可以使用{insert}函数保持一个页面的部分为动态。比如说,整个页面都被缓存了,除了一个显示在页面底部的横幅。通过使用{insert}函数来显示横幅,你可以保持在缓存内容中该元素的动态显示。参见{insert}的说明以获得该例子更多的信息。
使用clear_all_cache()函数可以清除所有的缓存文件,或者用clear_cache()函数清空一个缓存文件或缓存组。