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 新手入门教程
Aug 03 PHP
PHP5 面向对象(学习记录)
Dec 02 PHP
PHP入门学习笔记之一
Oct 12 PHP
自定义php类(查找/修改)xml文档
Mar 26 PHP
PHP运行环境配置与开发环境的配置(图文教程)
Jun 04 PHP
探讨php中遍历二维数组的几种方法详解
Jun 08 PHP
Linux环境下搭建php开发环境的操作步骤
Jun 17 PHP
Yii框架中memcache用法实例
Dec 03 PHP
mac系统下为 php 添加 pcntl 扩展
Aug 28 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
Mar 15 PHP
PHP FileSystem 文件系统常用api整理总结
Jul 12 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 adodb分页实现代码
2009/03/19 PHP
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
Javascript 面试题随笔
2011/03/31 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
jQuery实现新消息闪烁标题提示的方法
2015/03/11 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
JS实现瀑布流效果
2020/03/07 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
Python中pygame安装方法图文详解
2015/11/11 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
使用Python实现文字转语音并生成wav文件的例子
2019/08/08 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
应届生求职简历的自我评价怎么写
2013/10/23 职场文书
行政副总岗位职责
2014/02/23 职场文书
产品质量承诺书范文
2014/03/27 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
欢迎词怎么写
2015/01/23 职场文书
培训师岗位职责
2015/02/14 职场文书
《我是什么》教学反思
2016/02/16 职场文书
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python
Vue3中toRef与toRefs的区别
2022/03/24 Vue.js