对于访问流量比较大、数据不需要及时更新的网站而言,充分使用缓存技术可以有效的减轻服务器压力。smarty模板引擎中也内置了功能强大的缓存技术,只需要简单配置即可使用smarty的缓存功能。开启smarty高级缓存只需要在smarty的配置文件中设置好缓存存放的目录、开启缓存状态、设定缓存的有效期即可,具体使用方法如下:
代码如下 | 复制代码 |
/***********smarty.php***********/ include ('./smarty/Smarty.class.php') ;//引入smarty模版引擎类 $smarty=new Smarty;//实例化smarty对象 $smarty->template_dir="templates";//指定模版存放目录 $smarty->compile_dir="templates_c";//指定编译文件存放目录 $smarty->config_dir="config";//指定配置文件存放目录 $smarty->cache_dir="cache";//指定缓存存放目录 $smarty->caching=true;//开启smarty缓存 $smarty->cache_lifetime=60;//设定缓存的有效时间(单位:秒) $smarty->left_delimiter="<{";//指定左标签 $smarty->right_delimiter="}>";//指定右标签 ?> smarty高级缓存的使用方法实例 /***********index.php***********/ include ("smarty.php"); date_default_timezone_set('PRC'); $nowt=date('Y-m-d H:i:s'); function insert_buhuancun(){//局部不缓存的内容(注意!此处insert_后面的方法名称要与模板文件中的对应) $ntime='PHP知名网-'.date("Y-m-d H:m:s"); return $ntime; } $smarty->assign('nowt',$nowt); $smarty->display("index.html"); ?> /***********index.html***********/ 此处内容将缓存60秒(即smarty.php配置文件中cache_lifetime所设定的时间):<{$nowt> insert局部数据不被缓存:<{insert name='buhuancun'}> block局部块不被缓存: <{block name='thisnocache' nocache}> 包含在block块中的所有内容都不被缓存:<{$nowt}> <{/block}> |
使用smarty高级缓存来缓存数据库中的某些内容也是一种不错的选择,不仅可以提高用户访问的速度,而且还可以减轻由于频繁访问数据库所带来的压力
Smarty缓存的使用和清除
代码如下 | 复制代码 |
$smarty->clear_all_cache(); //显然会把不想清的别的模板的缓存也给清空了。 |
现在我在后台对这个带参数的页面basic.php?a=about 或=contact
里所涉及到的东东进行修改更新数据库操作。当然这时候也要清空一下这个basic.tpl模板的所有缓存即缓存号为about和contact的两个缓存。
代码如下 | 复制代码 |
// 清除某一模板的多个缓存中指定缓存号的一个 $smarty->display(‘cache.tpl’, cache_id); //创建带ID的缓存 $smarty->clear_all_cache(); //清除所有缓存 |