PHP Smarty 笔记
1.当$compile_check开启的时候(默认开启),每个模板文件和配置文件都会在缓存检查的的时候
执行编译检查,如果这些文件在缓存生成后修改,那么缓存会马上重新生成。这是一个覆盖的选项,所以更好的性能建议把
$compile_check设置成false
$smarty->setCompileCheck(false);
2.如果开启了$force_compile,缓存文件将总是会重新生成,效果和关闭缓存是一样的。而且还会降低性能
$force_compile一般用于调试目地。更却当的方式是把缓存$caching设置成Smarty::CACHING_OFF
3.isCached()函数可以检查模板的缓存是否存在。如果缓存已经存在,你就可以跳过这一步
$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT); if(!$smarty->isCached(‘index.tpl‘)){ //找不到缓存,这里进行一些赋值操作 $contents = get_database_contents(); $smarty->assign($contents); } $smarty->display(‘index.tpl‘);
4.{nocache}{/nocache}用于关闭模板区块的缓存,请去任任何一个在不缓存区域内的变量,都可以在缓存时从PHP获取到值
Today‘s date is
{nocache}
{$smarty.now|date_format}
{/nocache}
5.可以通过clearAllCache()来删除全部缓存,或者用clearCache()来删除特定的缓存组的缓存内容。
$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT); //仅删除index.tpl的缓存 $smarty->clearCache(‘index.tpl‘); //删除全部的缓存 $smarty->clearAllCache(); $smarty->display(‘index.tpl‘);
6.单页多个缓存,在调用display()或者fetch()的时候,可以设置多个缓存。当我们希望执行
display(‘index.tpl‘)的时候,可以根据不同的情况来生成不同的缓存,并且可以单独却分,那么
就需要设置$cache_id为第二个参数来实现。
$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT); $my_cache_id = $_GET[‘article_id‘]; $smarty->display(‘index,tpl‘,$my_cache_id);
if(!$smarty->isCached(‘index.tpl‘,$my_cache_id){ //没有缓存,这里将进行一些赋值操作 $contents = get_database_contents(); $smarty->assign($contents); } $smarty->display(‘index.tpl‘,$my_cache_id); //---------------------------------------------------------------------------- $smarty->clearCache(null,‘sport‘); $smarty->display(‘index.tpl‘,‘sport‘);
7.缓存组,你可以通过设置$cache_id更精细的组织缓存,在$cache_id值中使用竖线 | 来设置缓存组,同是你可以根据需要设置多个缓存组。
1 $smarty->clearCache(null,‘sports|basketball‘); 2 $smarty->clearCache(‘foo.tpl‘,‘sports|basketball‘); 3 $smarty->display(‘index.tpl‘,‘sport|basketball‘);
8.控制单个标签不进行缓存,可以为其加入"nocache"的属性
1 {$smarty.now|date_format nocache};
9.变量的缓存控制,通过assign()来控制变量不进行缓存。如果一个变量设置了不缓存,那么它在页面每次加载的时候都会从PHP里重新赋值
$smarty->assign(‘foo‘,time(),true);
10.插件的缓存控制,在注册插件时,同时控制插件的缓存registerPlugin()的第三个参数是$cacheable 其默认是TRUE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 |
<?php function
remaining_seconds( $params , $smarty ){ $remain
= $params [ ‘endtime‘ ] - time(); if ( $remain
>= 0){ return
$remain . ‘second(s)‘ ; } else { return
‘done‘ ; } } $smarty ->registerPlugin( ‘function‘ , ‘remaining‘ , ‘remaining_seconds‘ ,false, array ( ‘endtime‘ )); $smarty ->display( ‘index.tpl‘ ); ?> //-----------------------index.tpl内容------------------------------- {remaining endtime= $obj ->endtime} //--------------------------------------------------------------------------------------------- function
smarty_block_dynamic( $param , $content , $smarty ){ return
$content ; } $smarty ->registerPlugin( ‘block‘ , ‘dynamic‘ , ‘smarty_block_dynamic‘ ,flase); $smarty ->display( ‘index.tpl‘ ); //------------------------index.tpl内容-------------------------------------------- {dynamic} sssssssssssssssssssss {/dynamic}<br>?> |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。