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学习 运算符与运算符优先级
Jun 15 PHP
php下用cookie统计用户访问网页次数的代码
May 09 PHP
解析如何用php screw加密php源代码
Jun 20 PHP
PHP header()函数常用方法总结
Apr 11 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
Jul 28 PHP
PHP实现抓取HTTPS内容
Dec 01 PHP
php绘制一条弧线的方法
Jan 24 PHP
简单谈谈PHP中的Reload操作
Dec 12 PHP
PHP chop()函数讲解
Feb 11 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
Aug 27 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
Oct 15 PHP
laravel清除视图缓存的代码
Oct 23 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单例模式定义与使用实例详解
2017/02/06 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
laravel使用Faker数据填充的实现方法
2019/04/12 PHP
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
2007/02/15 Javascript
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
详解nodejs微信公众号开发——3.封装消息响应模块
2017/04/10 NodeJs
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
利用Blob进行文件上传的完整步骤
2018/08/02 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
python采用getopt解析命令行输入参数实例
2014/09/30 Python
Python OOP类中的几种函数或方法总结
2019/02/22 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
护理专业个人求职简历的自我评价
2013/10/13 职场文书
幼儿园教学管理制度
2014/02/04 职场文书
商务助理求职信范文
2014/04/20 职场文书
大学生社团活动总结
2014/04/26 职场文书
2014年团工作总结
2014/11/27 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
Python 数据可视化之Matplotlib详解
2021/11/02 Python