接到request后,先判断是否第一次请求该url,如果是,将该url所需的模板文件"编译"成php脚本,然后redirect;如果不是,就是说该url的模板已经被"编译"过了,检查不需要重编译后可以马上redirect,重编译条件可以自己设定为固定时限,默认的是模板文件被修改。

解决方案 »

  1.   

    接到request后,先判断是否第一次请求该url,如果是,将该url所需的模板文件"编译"成php脚本,然后redirect;如果不是,就是说该url的模板已经被"编译"过了,检查不需要重编译后可以马上redirect,重编译条件可以自己设定为固定时限,默认的是模板文件被修改。正如 jetxt(擦肩而过) 所说,模板文件未被修改就不用重编译条件,也就是即使是实时更新,也只是数据,模板文件一直都未改动过.按照这样的说法,即是使需要实时更新的项目也可以使用Smarty啊.
      

  2.   

    jetxt(擦肩而过) 讲的是模板的原理?不过我好像没有看到模板类中有对模板文件是否被修改过进行判断的地方。好像是缓存的?又不是。缓存转向的不是运行后生成的htm么?重编译的触发,除了固定时限,其他的方法怎么实现?
      

  3.   

    喔,smarty的是这样?smartemplate就不是了吧?
      

  4.   

    smarty可以设置是否生成静态HTML.
    smartemplate不曾了解.
      

  5.   

    你的疑问很有道理,不过原文的论述也不能说就一定不对。这要得从smarty的工作流程来确定,不能一概而论。
    smarty不仅仅是模板处理,他还有一套效率较高的缓存机制。如果不使用缓存机制,那么就不会出现楼主所困惑的问题。但是这样一来,smarty只是替你写了一个可读性很差的混合代码程序,运行速度并不比解释行的模板高很多。
      

  6.   

    smarty如果使用要缓存。
    而你的网站数据差不多接近实时更新。这期中缓存机制将是个累赘。
    如果又不是实时更新。
    看你网站更新速度。
    如果有十个人访问才更新一次,可以直接生成静态的。
    我总觉得缓存有点像鸡肋。