分享

compile_check=0且$force_compile=0时的用法

 明天网吧 2015-06-12
compile_check=0   false或者0   表示编译检查不开启


1、缓存文件的修改时间  减   它自己上次的修改时间    大于      $Smarty->cache_lifetime时,smarty将会依照以前的编译文件(编译文件不是这次编译的,是早就存在的),
重建
缓存文件
$Smarty->cache_lifetime是超时的时限。

注意点1、如果不超时,则控制器文件执行到display('filename.tpl')函数时,绕过编译文件,
直接加载缓存文件并输出之,实验证实:保证不超时的情况下,
改变
缓存文件的内容,输出结果是改变过的缓存文件内容。


注意点2、
如果超时,则控制器文件依照编译文件(不是模板文件哦),重建缓存,再输出结果(具体看下面第三点的说明)

注意点3、
控制器文件中display('filename.tpl')函数以前代码,如果有““echo等输出”,则和“
display('filename.tpl')函数的输出内容”一起输出,
“echo等输出
和缓存没有关系的,只是一段普通php代码的输出结果而已。

2、模板文件修改了的情况下,虽然模板文件被修改,但你不会看到修改结果,因为模板没有得到重新编译,也就是说,编译文件和
缓存文件
永远不会因为模板文件改变了而重建),在
compile_check=0且$force_compile=0设置下,
模板文件不起任何作用,就像被“废置”了

3、虽然编译文件在compile_check=0且$force_compile=0时 设置下,永远不会重建,但是如果手动改变了编译文件的内容,则影响缓存文件的内容(
原因是:
缓存文件重建时,
控制器文件是直接加载编译文件进行重建的,不通过加载模板文件重建,这样就不必进行 “模板文件到编译文件的正则替换”了,效率高)
重点:这种情况下,编译文件是早就存在的,如果手动删除它,smarty会依照模板文件重建它,如果改变它的内容,smarty也不会依照模板文件重建它(不过下次缓存超时,smarty会依照“改变了内容的编译文件”重建缓存文件,这样导致输出的缓存文件内容和模板文件的内容不一致。总之,在此选项下,编译文件不是这次编译生成的,而是早就存在了的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多