关于smarty缓存的设置问题?
2012-04-25 13:26
183 查看
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关闭即可。
但是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关闭即可。
相关文章推荐
- .NET进期综合---缓存/关于跨页面值传递/页面设置CSS/用户自定义控件/fileupload的路径问题/dropdown二级联动的数据库设计
- 关于酷我音乐盒2010贺岁版不能设置缓存所在的位置的问题
- 关于uiwebview或者网站可能出现的缓存js,css问题
- arcgis for js在缓冲区分析中关于 bufferSpatialReference的设置不正确不能执行或者执行错误问题;
- 关于servlet的缓存问题
- “JAVA.LANG.NOCLASSDEFFOUNDERROR” 关于CLASSPATH设置问题
- MVC RC2中关于HtmlHelper给DropDownList设置初始选中值的问题
- 关于进行jenkins自动工具设置工作的问题
- 关于Django的时区设置TIME_ZONE,USE_TZ的问题
- 关于FusionCharts图表宽度width的设置问题导致图表显示异常的解决办法
- 关于delphi编译路径设置问题
- 关于ImageButton的ImageUrl属性设置问题
- 关于Eclipse中代码显示显色的设置问题
- 关于ubuntu下设置静态IP,而且也设置了DNS服务后,仍然无法上网的问题
- 关于行内元素能否设置宽高的问题
- 关于background设置多个背景图片的问题
- 关于在 UITableView FooterView 中控件宽度设置问题
- 关于页面缓存的设置
- 关于vc++2005/vc++.net调试com组件时断点设置无效的问题
- 关于Windows Mobile 6 Professional Emulator中的一个串口设置小问题.