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 相关文章推荐
在Zeus Web Server中安装PHP语言支持
Oct 09 PHP
十天学会php之第十天
Oct 09 PHP
PHP+DBM的同学录程序(4)
Oct 09 PHP
基于wordpress主题制作的具体实现步骤
May 10 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
Jun 03 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 PHP
tp5.1 框架join方法用法实例分析
May 26 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上传、管理照片示例
2006/10/09 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
PHP实现单例模式最安全的做法
2014/06/13 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
基于jQuery判断两个元素是否有重叠部分的代码
2012/07/25 Javascript
js限制文本框的输入内容代码分享(3类)
2015/08/20 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
JS实现简单表格排序操作示例
2017/10/07 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
浅析vue-router原理
2018/10/19 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
Python创建模块及模块导入的方法
2015/05/27 Python
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
使用Python实现租车计费系统的两种方法
2018/09/29 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
Python list运算操作代码实例解析
2020/01/20 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
Pymysql实现往表中插入数据过程解析
2020/06/02 Python
Python项目跨域问题解决方案
2020/06/22 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
大学毕业生求职自荐信
2014/02/20 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
学校团代会开幕词
2016/03/04 职场文书
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
对象析构函数__del__在Python中何时使用
2022/03/22 Python