php smarty模版引擎中的缓存应用


Posted in PHP onDecember 02, 2009

1,Smarty缓存的配置:

$smarty->cache-dir="目录名"; //创建缓存目录名 
$smarty->caching=true; //开启缓存,为false的时候缓存无效 
$smarty->cache_lifetime=60; //缓存时间,单位是秒

2,Smarty缓存的使用与清除
$marty->display("cache.tpl",cache_id); //创建带ID的缓存 
$marty->clear_all_cache(); //清楚所有缓存 
$marty->clear_cache("index.php"); //清楚index.php中的缓存 
$marty->clear_cache("index.php',cache_id); //清楚index.php中指定ID的缓存

3,Smarty的局部缓存
第一个: insert_函数默认是不缓存,这个属性是不能修改
使用方法:例子
index.php中,
function insert_get_time(){
return date("Y-m-d H:m:s");
}
index.html中,
{insert name="get_time"}

第二个: smarty_block
定义一个block:smarty_block_name($params,$content, &$smarty){return $content;} //name表示区域名
注册block:$smarty->register_block('name', 'smarty_block_name', false); //第三参数false表示该区域不被缓存
模板写法:{name}内容{/name}
写成block插件:
1)定义一件插件函数:block.cacheless.php,放在smarty的plugins目录
block.cacheless.php的内容如下:
<?php
function smarty_block_cacheless($param, $content, &$smarty) {
return $content;
}
?>
2) 编写程序及模板
示例程序:testCacheLess.php
<?php
include('Smarty.class.php');
$smarty = new Smarty;
$smarty->caching=true;
$smarty->cache_lifetime = 6;
$smarty->display('cache.tpl');
?>
所用的模板:cache.tpl
已经缓存的:{$smarty.now}<br>
{cacheless}
没有缓存的:{$smarty.now}
{/cacheless}
4自定义缓存
设置cache_handler_func使用自定义的函数处理缓存
如:
$smarty->cache_handler_func = "myCache";
function myCache($action, &$smarty_obj, &$cache_content, $tpl_file=null, $cache_id=null, $compile_id=null){
}
该函数的一般是根椐$action来判断缓存当前操作:
switch($action){
case "read"://读取缓存内容
case "write"://写入缓存
case "clear"://清空
}
一般使用md5($tpl_file.$cache_id.$compile_id)作为唯一的cache_id
如果需要,可使用gzcompress和gzuncompress来压缩和解压

PHP 相关文章推荐
BBS(php &amp; mysql)完整版(七)
Oct 09 PHP
第九节--绑定
Nov 16 PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
php自定义类fsocket模拟post或get请求的方法
Jul 31 PHP
PHP生成可点击刷新的验证码简单示例
May 13 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
May 22 PHP
php封装的smartyBC类完整实例
Oct 19 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
May 12 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 PHP
Yii框架自定义数据库操作组件示例
Nov 11 PHP
PHP标准库 (SPL)――Countable用法示例
Jun 05 PHP
php 一元分词算法
Nov 30 #PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
Nov 30 #PHP
php读取html并截取字符串的简单代码
Nov 30 #PHP
php 获取客户端的真实ip
Nov 30 #PHP
php操作sqlserver关于时间日期读取的小小见解
Nov 29 #PHP
php中$this-&amp;gt;含义分析
Nov 29 #PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 #PHP
You might like
用PHP和ACCESS写聊天室(四)
2006/10/09 PHP
PHP实现带重试功能的curl连接示例
2016/07/28 PHP
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
2016/05/12 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
java直接调用python脚本的例子
2014/02/16 Python
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
python自动zip压缩目录的方法
2015/06/28 Python
浅谈Python的Django框架中的缓存控制
2015/07/24 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
使用Python实现批量ping操作方法
2020/05/06 Python
python实现银行账户系统
2021/02/22 Python
CSS3区域模块region相关编写示例
2015/08/28 HTML / CSS
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
工伤赔偿协议书范本
2014/04/15 职场文书
网络销售员岗位职责
2015/04/11 职场文书
大学生求职意向书
2015/05/11 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP