Smarty局部缓存的几种方法简介


Posted in PHP onJune 17, 2014

很多时候我们在用smarty时,并不希望缓存整个页面,例如天气、股票等这类即时更新的信息。那么我们可以让其不缓存,常见的实现有如下3种方法:

1.insert 法:

Insert 函数类似于 inluce 函数,不同之处是 insert 所包含的内容不会被缓存,每次调用该模板都会重新执行该函数。比如说我们定义一个显示时间的函数:

function insert_get_current_time() {
return date("H:i:s");
} 
//然后在模板中:
{insert name="get_current_time"} 

这样每次打开页面,显示的都是即时时间,而不是缓存的。注意这里的函数名一定要以insert开头,模板中的name与之对应。如果我们的函数包含一些参数,那么我们的在模板中可以这样:

{insert name="get_current_time" lid=#banner_location_id# sid=#site_id#}
//那么Smarty 调用该函数类似insert_get_current_time(array("lid"=>"12345","sid"=>67890"));

并将返回的结果显示在调用的位置。

2.动态block 法:

在smarty代码中:

function smarty_block_nocache($param,$content,$smarty)    
{
return $content;
}
$smarty->register_block('nocache','smarty_block_nocache',false);

在模板文件中:

<{nocache}>    //这里放不需要被缓存的内容 <{/nocache}>

3.插件block法:

 这个跟block差不多,只是我们将其以插件的形式来做。在Smarty/plugins目录下建一个文件:block.nocache.php,这里命名一定要规范,否则smarty识别不了。 内容如下:

function smarty_block_nocache($param,$content,$smarty)
{
return $content;
} 

在模板中和上面一直,不需要被缓存的地方加上nocache就可以了!

PHP 相关文章推荐
用PHP制作静态网站的模板框架(四)
Oct 09 PHP
PHP函数http_build_query使用详解
Aug 20 PHP
ThinkPHP中处理表单中的注意事项
Nov 22 PHP
CentOS安装php v8js教程
Feb 26 PHP
在php中设置session用memcache来存储的方法总结
Jan 14 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 PHP
Yii2 加载css、js 载静态资源的方法
Mar 10 PHP
thinkPHP多表查询及分页功能实现方法示例
Jul 03 PHP
thinkPHP实现基于ajax的评论回复功能
Jun 22 PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 PHP
laravel框架查询数据集转为数组的两种方法
Oct 10 PHP
浅谈PHP中的那些魔术常量
Dec 02 PHP
smarty模板局部缓存方法使用示例
Jun 17 #PHP
CodeIgniter CLI模式简介
Jun 17 #PHP
CI框架在CLI下执行占用内存过大问题的解决方法
Jun 17 #PHP
CI框架自动加载session出现报错的解决办法
Jun 17 #PHP
Thinkphp模板中截取字符串函数简介
Jun 17 #PHP
CI框架中zip类应用示例
Jun 17 #PHP
php获取网页请求状态程序示例
Jun 17 #PHP
You might like
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
jQuery 1.0.2
2006/10/11 Javascript
js 图片轮播(5张图片)
2008/12/30 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
js 自制滚动条的小例子
2013/03/16 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
node跨域请求方法小结
2017/08/25 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
vue $set 给数据赋值的实例
2019/11/09 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
大学生物业管理求职信
2013/10/24 职场文书
办公室年终个人自我评价
2013/10/28 职场文书
应届生新闻编辑求职信
2013/11/19 职场文书
教师队伍管理制度
2014/01/14 职场文书
祖国在我心中演讲稿
2014/01/15 职场文书
委托公证书
2014/04/08 职场文书
优秀共产党员演讲稿
2014/09/04 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
elasticSearch-api的具体操作步骤讲解
2021/06/28 Java/Android