smarty模板引擎缓存机制详解

smarty模板引擎缓存机制详解

ID:27572896

大小:61.00 KB

页数:6页

时间:2018-12-04

smarty模板引擎缓存机制详解_第1页
smarty模板引擎缓存机制详解_第2页
smarty模板引擎缓存机制详解_第3页
smarty模板引擎缓存机制详解_第4页
smarty模板引擎缓存机制详解_第5页
资源描述:

《smarty模板引擎缓存机制详解》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Smarty模板引擎缓存机制详解本文实例讲述了Smarty模板引擎缓存机制。分享给大家供大家参考,具体如下:首先说下smarty缓存和编译,这是两个不同的概念,编译默认情况下是启动的,而缓存机制需要人为开启,smarty编译过的文件还是php文件,所以执行的时候还是编译的,如果涉及到数据库,还是要访问数据库的所以开销也不小啦,所以需要smarty缓存来解决!1.开启全局缓存$smarty-gt:cache_dir=,Vcaches/";//缓存目录$smarty-gt;caching=true;//开

2、启缓存,为flase的时侯缓存无效$smarty-gt:cachejifetime=3600;//缓存时间2.—个页面使用多个缓存如:一个文章模板页面会生成多个文章页面,当然是缓存成很多页面,实现起来很简单,只要在display()方法设置第二个参数,指定唯一标识符即可。如下php代码:$smarty-gt:display(’index.tpV,$_GET["article_id"]);如上,通过第二个参数文章的id缓存一个文章页面。3.为缓存减小开销也就是说,已经缓存的页面无需进行数据库的操作处理了

3、,可通过is_cached()方法判断!if(!$smarty-gt:is_cached(’index,tpl’)){nbsp;//调用数据库$smarty-gt;display(’index.tpl’);1.清除缓存一般在开发过程中是不开启缓存的,因为在缓存时间内输出结果不变,但是在应用过程中开启缓存能大大提高web性能,清除缓存方法如下:clear_all_cache()://清除所有缓存clear_cache(,index,tpV);//清除index.tpl的缓存clear_cache(’in

4、dex,tpl’,cache_id);//清除指定id的缓存2.关闭局部缓存如果一个页面中一部分缓存,而另一部分不需要缓存,就可以这样做,比如说显示用户登录的名称就需要关闭缓存,smarty提供了如下三种解决方法:(1)使用insert模板的一部分不被缓存定义一个iriser标签要使用的处理函数,函数名格式为:insert_xx(array$params,objectamp;$smarty)其中的xx是insert的name,也就是说,如果你定义的函数为insert_abc,则模板中使用方法为{ins

5、ertname=abc}参数通ii$params传入也可以做成insert插件,文件名命名为:insert,xx.php,函数命名为:smarty_insert_aa($params,amp;$smarty),xx定义同上(1)$smarty-gt;register_block($params,amp:$smarty)使整篇页面中的某一块不被缓存定义一个block:smarty_block_name($params,$content,amp:$smarty){return$content:}nbsp;

6、//name表示区域名注册block:$smarty-gt;register_block(name,smarty_block_name,false)://第三参数false表示该区域不被缓存模板写法:{name}内容{/name}写成block插件:第一步:定义一件插件函数:block,cacheless.php,放在smarty的piugins目录block.cacheless.php的内容如下:It;?phpfunctionsmarty_block_cacheless($param,$conten

7、t,amp;$smarty){return$content:}?gt;第二步:编写程序及模板示例程序:testCacheLess.phpIt;?phpinclude(Smarty.class.php);$smarty=newSmarty;$smarty-gt;caching=true;$smarty-gt:cache_lifetime=6;$smarty-gt;display(cache,tpl);?gt;所用的模板:cache,tpl己经缓存的:{$smarty,now}It;brgt;{eache

8、less}没有缓存的:{$smarty.now}{/cacheless}现在运行一下,发现是不起作用的,两行内容都被缓存了第三步:改写Smarty_Compiler.class,php(注:该文件很重要,请先备份,以在必要时恢复)复制代码代码如下:$this~gt:_plugins[block][$tag_command]=array($plugin_func,null,null,null,true):修改成:if($tag_command==cache

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。