日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
PHP模版引擎之Smarty的緩存操作技巧

我們知道PHP語言作為開源社區(qū)的一員,提供了各種模板引擎,如FastTemplate,Smarty,SimpleTemplate等,而Smarty是現(xiàn)在使用得比較多的PHP模板引擎,下面介紹Smarty的緩存操作技巧。

成都網(wǎng)站設(shè)計、做網(wǎng)站的開發(fā),更需要了解用戶,從用戶角度來建設(shè)網(wǎng)站,獲得較好的用戶體驗。創(chuàng)新互聯(lián)多年互聯(lián)網(wǎng)經(jīng)驗,見的多,溝通容易、能幫助客戶提出的運營建議。作為成都一家網(wǎng)絡(luò)公司,打造的就是網(wǎng)站建設(shè)產(chǎn)品直銷的概念。選擇創(chuàng)新互聯(lián),不只是建站,我們把建站作為產(chǎn)品,不斷的更新、完善,讓每位來訪用戶感受到浩方產(chǎn)品的價值服務。

一、使用緩存

要開啟smarty的緩存,只需將caching設(shè)為true,并指定cache_dir即可.

使用cache_lefetime指定緩存生存時間,單位為秒

要對相同頁面生成多個不同的緩存,在display或fetch中加入第二參數(shù)cache_id,如$smarty->display('index.tpl',$my_cache_id);此特性可用于對不同的$_GET進行不同的緩存

二、清除緩存

 
 
 
  1. clear_all_cache();//清除所有緩存
  2. clear_cache('index.tpl');//清除index.tpl的緩存
  3. clear_cache('index.tpl',cache_id);//清除指定id的緩存

三、使用自定義緩存方式

設(shè)置cache_handler_func使用自定義的函數(shù)處理緩存
如:

 
 
 
  1. $smarty->cache_handler_func = "myCache";
  2. function myCache($action, &$smarty_obj, &$cache_content, $tpl_file=null,
  3. $cache_id=null, $compile_id=null)
  4. {
  5. }

該函數(shù)的一般是根椐$action來判斷緩存當前操作:

 
 
 
  1. switch($action){
  2. case "read"://讀取緩存內(nèi)容
  3. case "write"://寫入緩存
  4. case "clear"://清空
  5. }

一般使用md5($tpl_file.$cache_id.$compile_id)作為唯一的cache_id

如果需要,可使用gzcompress和gzuncompress來壓縮和解壓

四、局部關(guān)閉緩存

要在某些區(qū)域使緩存失效(只對需要的緩存),有幾種方法:

insert:

定義一個insert標簽要使用的處理函數(shù),函數(shù)名格式為:

 
 
 
  1. insert_xx(array $params, object &$smarty)

其中的xx是insert的name,也就是說,如果你定義的函數(shù)為insert_abc,則模板中使用方法為

 
 
 
  1. {insert name='abc'}

參數(shù)通過$params傳入

也可以做成insert插件,文件名命名為:insert.xx.php,函數(shù)命名為:smarty_insert_aa($params,&$smarty),xx定義同上

register_block:

定義一個

 
 
 
  1. block:
  2. smarty_block_name($params,$content, &$smarty)
  3. {
  4. return $content;
  5. } //name表示區(qū)域名

注冊

 
 
 
  1. block:$smarty->register_block('name', 'smarty_block_name', false); 
  2. //第三參數(shù)false表示該區(qū)域不被緩存

模板寫法:{name}內(nèi)容{/name}

寫成block插件:

1)定義一件插件函數(shù):block.cacheless.php,放在smarty的plugins目錄

block.cacheless.php的內(nèi)容如下:

 
 
 
  1. function smarty_block_cacheless($param, $content, &$smarty) {
  2. return $content;
  3. }
  4. ?>

2) 編寫程序及模板

示例程序:testCacheLess.php

 
 
 
  1. include('Smarty.class.php');
  2. $smarty = new Smarty;
  3. $smarty->caching=true;
  4. $smarty->cache_lifetime = 6;
  5. $smarty->display('cache.tpl');
  6. ?>

所用的模板:cache.tpl

已經(jīng)緩存的

 
 
 
  1. {$smarty.now}
  2. {cacheless}

沒有緩存的:

 
 
 
  1. {$smarty.now}
  2. {/cacheless}

到這,就給大家介紹完了。建議大家看看這兩篇文章,《PHP模板之Smarty教程》和《詳細介紹PHP模板引擎Smarty》,供大家參考。


分享文章:PHP模版引擎之Smarty的緩存操作技巧
文章地址:http://www.5511xx.com/article/dhejish.html