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 相关文章推荐
如何提高MYSQL数据库的查询统计速度 select 索引应用
Apr 11 PHP
php 友好URL的实现(吐血推荐)
Oct 04 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
Jun 09 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
php通过ajax实现双击table修改内容
Apr 28 PHP
PHP把小数转成整数3种方法
Jun 30 PHP
HTML中嵌入PHP的简单方法
Feb 16 PHP
PHP实现linux命令tail -f
Feb 22 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
php cookie 详解使用实例
Nov 03 PHP
PHP进阶学习之依赖注入与Ioc容器详解
Jun 19 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
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
PHP正确配置mysql(apache环境)
2011/08/28 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
PHP页面实现定时跳转的方法
2014/10/31 PHP
PHP入门教程之PHP操作MySQL的方法分析
2016/09/11 PHP
PHP4和PHP5版本下解析XML文档的操作方法实例分析
2017/05/20 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
浅谈angular.js跨域post解决方案
2017/08/30 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
深入了解Vue3模板编译原理
2020/11/19 Vue.js
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
Python中列表的一些基本操作知识汇总
2015/05/20 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
python实现合并两个排序的链表
2019/03/03 Python
Django 反向生成url实例详解
2019/07/30 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
animation和transition的区别
2020/10/12 HTML / CSS
初中地理教学反思
2014/01/11 职场文书
解除合同协议书
2014/04/17 职场文书
夫妻分居协议书范本
2014/11/28 职场文书