加载中…
个人资料
盛涛
盛涛
  • 博客等级:
  • 博客积分:0
  • 博客访问:56,613
  • 关注人气:1
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

Smarty缓存的设置问题

(2011-06-09 11:28:26)
标签:

杂谈

分类: IT
Smarty缓存的设置问题
smarty不仅将php实现了mvp,将代码和模板层分离;同时还缓存页面,
加快网站的打开速度,提升网站性能,降低数据库的压力,但是怎么设置缓存才是最合理的呢?
smarty的缓存开关变量是$caching,默认是关闭状态,值为false,一般是在调试状态下就关闭,但是真正投入到生产环境的时候是需要开启缓存的,能够极大提升网站的打开速度。

但是smarty的缓存也是一把双刃剑,在缓存前台页面的同时,如果后台数据更新的非常频繁,如果缓存设置不当的话,前台将无法及时更新。

这里介绍另外一个smarty的变量:$compile_check(编译检查变量),如果开启此变量,smarty会检查模板文件是否改动过,
如果模板改动过的话smarty就会重新生成模板编译文件,但是否会生成缓存文件需要看两个方面,第一是smarty是否开启了缓存,第二是对应的缓存文件是否存在着。

下面我们列举几个可能性:

1、$compile_check开启,$caching开启,同时设置$caching失效时间为3600秒(即一小时)

a.如果只是数据库更新了内容,模板无改动,不会更新模板编译文件(就算删除模板编译也不会重新生成,模板编译步骤直接跳过),在这3600中,前台页面无法体现出数据更新后的效果;

b.如果更新了模板文件,smarty只会重新生成模板的编译文件,但是缓存依然不会重新生成(除非将之前生成的缓存文件删除);

c.如果模板和数据库都有更新,效果同前一个效果,只是重新生成模板的编译文件,前台效果需要3600秒后才会更新(除非将之前生成的缓存文件删除)。

2、$compile_check关闭,caching开启,同时设置$caching失效时间为3600秒(即一小时)

a.如果只是数据库更新了内容,模板无改动,在这3600中,前台页面无法体现出数据更新后的效果;

b.如果更新了模板文件,smarty不会生成模板的编译文件,缓存不会重新生成(除非将之前生成的缓存文件删除);

c.如果模板和数据库都有更新,模板和缓存都不会重新生成,删除之前生成的缓存后可以重新生成缓存,但是模板编译文件依旧不会生成。

综合上述条件,我们在网站制作中,可以采用这样的策略:

第一种策略:如果为了达到更大的性能,可以将$compile_check关闭,caching开启;

第二种策略:如果只是想仅达到mvp代码和模板分离的效果,可以将$compile_check开启,Caching关闭即可。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有