免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1140 | 回复: 0
打印 上一主题 下一主题

让我迷惑的Smarty模板(编译、缓存) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-18 16:37 |只看该作者 |倒序浏览

                说 Smarty 模板好,无非是因为她的编译和缓存机制。
可是编译和缓存机制,又有多少人能够真正理解? 在网上,对 Smarty 充满疑问的也不只是我一个,下面这位朋友的问题就提的很好。
------------------------------------------------------------
楼主: Smarty类的模板在哪些项目中不适宜使用?
看过一个文章说,需要实时更新的项目不宜使用Smarty.  
   
摘原文:  
采用smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)  
不适合使用smarty的地方:        
    1.   需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,这类型的程序使用smarty返而会使模板处理速度变慢。   
  ...  
   
但我有疑问...实时更新的只是数据.为什么smarty不适用于这类项目呢?  
因为在下一次访问模板时将WEB请求直接转换到这个非模板技术的PHP文件中,所以就算实时更新也不用重新编译而影速度...  
希望大老们指点一下,到底为什么需要实时更新的项目不宜使用Smarty?还有其他哪些项目不宜使用?  
1 楼lawyu(雨淋漓)
关注,不清楚这个
2 楼jetxt(擦肩而过)
接到request后,先判断是否第一次请求该url,如果是,将该url所需的模板文件"编译"成php脚本,然后redirect;如果不是,就是说该url的模板已经被"编译"过了,检查不需要重编译后可以马上redirect,重编译条件可以自己设定为固定时限,默认的是模板文件被修改。
3 楼Mark_Feng()
up
4 楼afoskoo(暂停打印)
正如   jetxt(擦肩而过)   所说,模板文件未被修改就不用重编译条件,也就是即使是实时更新,也只是数据,模板文件一直都未改动过.按照这样的说法,即是使需要实时更新的项目也可以使用Smarty啊.   
5 楼zairwolfi(君子兰)
jetxt(擦肩而过)   讲的是模板的原理?不过我好像没有看到模板类中有对模板文件是否被修改过进行判断的地方。好像是缓存的?又不是。缓存转向的不是运行后生成的htm么?  
   
重编译的触发,除了固定时限,其他的方法怎么实现?
6 楼zairwolfi(君子兰)
喔,smarty的是这样?smartemplate就不是了吧?
7 楼afoskoo(暂停打印)
smarty可以设置是否生成静态HTML.    smartemplate不曾了解.
8 楼xuzuning(唠叨)
你的疑问很有道理,不过原文的论述也不能说就一定不对。这要得从smarty的工作流程来确定,不能一概而论。  
  smarty不仅仅是模板处理,他还有一套效率较高的缓存机制。如果不使用缓存机制,那么就不会出现楼主所困惑的问题。但是这样一来,smarty只是替你写了一个可读性很差的混合代码程序,运行速度并不比解释行的模板高很多。  
9 楼raid79(山鹰)
学习
10 楼afoskoo(暂停打印)
唠叨大哥可否给一些讲述这方面机制的文章参考参考?
11 楼uuq(杜牧)
  smarty如果使用要缓存。  
  而你的网站数据差不多接近实时更新。这期中缓存机制将是个累赘。  
  如果又不是实时更新。  
  看你网站更新速度。  
  如果有十个人访问才更新一次,可以直接生成静态的。  
  我总觉得缓存有点像鸡肋。  
   
12 楼zairwolfi(君子兰)
当访问量大的时候,远超过更新速度时,用缓存可以减少好多压力。
13 楼afoskoo(暂停打印)回复于 2005-01-26 08:48:21 得分 0
多谢各位大老支持!
来源:
http://topic.csdn.net/t/20050125/15/3752582.html
另一位朋友对 Smarty 编译和缓存的看法
今天看完了Smarty,现在才分清楚,编译是编译,缓存是缓存,静态是静态.对于Smarty的机制今天总算明白了.
Smarty确实很强大,强大到,美工要进行专业的编程类学习可以达到"高境界"的应用,不过..感觉是鸡肋,=_=b
模板编译,这是功能确实非常有趣,它是独立争对模板进行编译的功能!
为什么要编译模板,这里就存在很多的原因了,(效率,跨平台(dom),更大的压缩率,更灵活的输出)当你学过研究过Ajax后,就知道用Smarty编译出来的模板几乎不需要进行nodeType的类型测试,因为已经清除了多余的#text类型.帅呆了.
缓存设置,这外功能就是纯数据的,原以为Smarty是将数据和模板一起编译,谁知还是分离的,所以刚开始有一些迷糊.后来Fidy跟说明了一下才清楚.
来源:
http://www.bpsky.net/?action=show&job=articles&tid=203
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/1222/showart_323779.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP