php+Smarty的缓存操作

一、使用缓存要敞开smarty的缓存,只需将caching设为true,并钦定cache_dir即可.使用cache_lefetime钦点缓存生存时间,单位为秒要对同样页目生成四个例外的缓存,在display或fetch中步向第二参数cache_id,如$smarty-display(”index.tpl”,$my_cache_idState of Qatar;此个性可用来对分裂的$_GET进行不一样的缓存二、驱除缓存clear_all_cache(卡塔尔国;//肃清全数缓存clear_cache(”index.tpl”);//清除index.tpl的缓存clear_cache(”index.tpl”,cache_idState of Qatar;//消释钦定id的缓存三、使用自定义缓存方式设置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来收缩和平解决压四、局地关闭缓存要在一些区域使缓存失效(只对要求的缓存卡塔尔(قطر‎,有三种艺术:inser:定义贰个inser标签要使用的管理函数,函数名格式为:insert_xx(array
$params, object
$smartyState of Qatar此中的xx是insert的name,也正是说,假使您定义的函数为insert_abc,则模板中利用方法为{insert
name=”abc”}参数通过$params传入也得以做成insert插件,文件名命名字为:insert.xx.php,函数命名字为:smarty_insert_aa($params,$smartyState of Qatar,xx定义同上register_block:定义五个block:smarty_block_name($params,$content,
$smarty卡塔尔{return $content;}
//name表示区域名注册block:$smarty-register_block(”name”,
”smarty_block_name”, false卡塔尔国;
//第三参数false表示该区域不被缓存模板写法:{name}内容{/name}写成block插件:1State of Qatar定义一件插件函数:block.cacheless.php,放在smarty的plugins目录block.cacheless.php的剧情如下:2State of Qatar编写程序及模板示例程序:testCacheLess.php所用的模板:cache.tpl已经缓存的:{$smarty.now}{cacheless}未有缓存的:{$smarty.now}{/cacheless}关于模板中有的不被缓存的消除办法:smarty提供了强硬的缓存效能。但不常我们并不期待整篇文书档案都被缓存,而是有取舍的缓存某一局地内容或某一片段剧情不被缓存。举个例子你在页面最上部使用二个分包广告条地方的模板,广告条可以满含别的HTML、图象、FLASH等混合消息.
因而这里不可能利用三个静态的链接,同不常候大家也不愿意该广告条被缓存.
这就须求在 insert
函数内定,同有难点间必要八个函数取广告条的始末信息。smarty也提供了这种缓存调节技艺。我们得以选用{insert}使模板的一局部不被缓存能够应用$smarty-register_function($params,$smarty卡塔尔(قطر‎阻止插件从缓存中输出,还足以选拔$smarty-register_block($params,$smarty卡塔尔国使整篇页面中的某一块不被缓存。下边我们真对一个归纳供给,分别证实那二种调控缓存输出的方法。须要:被缓存的文书档案中当前时刻不被缓存,随每一回刷新而退换。<

1,Smarty缓存的陈设: 复制代码
代码如下:$smarty->cache-dir=”目录名”; //创立缓存目录名
$smarty->caching=true; //开启缓存,为false的时候缓存无效
$smarty->cache_lifetime=60; //缓存时间,单位是秒
2,Smarty缓存的运用与清除 复制代码
代码如下:$marty->display; //创造带ID的缓存
$marty->clear_all_cache(卡塔尔国; //清楚全数缓存 $marty->clear_cache;
//清楚index.php中的缓存 $marty->clear_cache;
//清楚index.php中指定ID的缓存 3,斯马特y的有个别缓存 第一个:
insert_函数私下认可是不缓存,那几个天性是不能够修改 使用办法:例子
index.php中, function insert_get_time(){ return date; } index.html中,
{insert name=”get_time”} 第二个: smarty_block
定义一个block:smarty_block_name($params,$content, &$smartyState of Qatar{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的源委如下:

2卡塔尔(قطر‎ 编写程序及模板 示例程序:testCacheLess.php

caching=true; $smarty->cache_lifetime = 6; $smarty->display;
?> 所用的沙盘模拟经营:cache.tpl 已经缓存的:{$smarty.now}
{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{ case “read”://读取缓存内容 case “write”://写入缓存 case
“clear”://清空 }
日常选取md5($tpl_file.$cache_id.$compile_id卡塔尔(قطر‎作为独一的cache_id
假使急需,可接收gzcompress和gzuncompress来减弱和解压

发表评论

电子邮件地址不会被公开。 必填项已用*标注