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 相关文章推荐
从零开始学YII2框架(一)通过Composer安装Yii2框架
Aug 20 PHP
php实现通用的从数据库表读取数据到数组的函数实例
Mar 21 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
PHP实现基于文本的摩斯电码生成器
Jan 11 PHP
PHP全局变量与超级全局变量区别分析
Apr 01 PHP
Thinkphp批量更新数据的方法汇总
Jun 29 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
Jul 06 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
YII分模块加载路由的实现方法
Oct 01 PHP
PHP token验证生成原理实例分析
Jun 05 PHP
php7性能提升的原因详解
Oct 13 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中的那些魔术常量
2020/12/02 PHP
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
Javascript中的async awai的用法
2017/05/17 Javascript
Angular Renderer (渲染器)的具体使用
2018/05/03 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
2019/08/16 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
Vue如何基于vue-i18n实现多国语言兼容
2020/07/17 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
关于python写入文件自动换行的问题
2018/06/23 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
澳大利亚波西米亚风情网上商店:Czarina
2019/03/18 全球购物
大学生毕业自我评价范文分享
2013/11/11 职场文书
给水工程专业毕业生自荐信
2014/01/28 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
高校自主招生自荐信2015
2015/03/04 职场文书
奔腾年代观后感
2015/06/09 职场文书
法制教育观后感
2015/06/17 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
Python办公自动化解决world文件批量转换
2021/09/15 Python
python playwright之元素定位示例详解
2022/07/23 Python