程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> smarty局部緩存技術[源碼分析]

smarty局部緩存技術[源碼分析]

編輯:關於PHP編程

  之前一直使用其它的模板引擎,今天在聽bkJia培訓課程的時候,講到了smarty模板引擎的局部緩存,感覺挺好的,在此結合自身的理解,感慨一翻,要是有什麼不對的地方,希望朋友跟貼回復。 大家一起共勉學習。 同時也感謝張老師,為像我們這樣的PHP初學者提供一個非常優秀的學習平台。

  發現smarty是如此強大與神奇的一個東東,使我對它的好感不亞於對以前使用的模板引擎.

  由於我默認是開啟smarty的緩存的,但是在些地方的數據是實時更新或者更新較快的,不宜緩存,這樣,局部緩存便有用武之地了。

  1,insert 法

  定義一個函數顯示時間的:

  1. function insert_get_current_time(){  
  2.     $timestamp=emptyempty($timestamp)?time():$timestamp;  
  3.     $timeoffset=(int) +8;  
  4.     return $ret=gmdate("Y-n-j g:ia", $timestamp + $timeoffset * 3600);  

  然後在模板中:

 

  1. {insert name="get_current_time"} 

  這樣每次打開頁面,顯示的都是即時時間,而不是緩存的。注意這裡的函數名一定要以insert開頭,模板中的name與之對應。

  這種方法簡單,但是如果要顯示的內容是一大塊的,就不宜使用了。

  2,動態block 法

 

  1. //部分緩存  
  2. function smarty_block_nocache($param, $content, $smarty)  
  3.  {  
  4.     return $content;  
  5. }  
  6. $smarty->register_block(nocache, smarty_block_nocache, false); 

在模板中:

 

  1. {nocache}  
  2. {$smarty.now}  
  3. {/nocache} 

\

  這樣每次刷新頁面,顯示的時間都是不同的。

  3,插件block 法

  在Smarty/plugins目錄下建一個文件

  block.nocache.php 內容如下:

 

  1. <?php   
  2. function smarty_block_nocache($param, $content, $smarty)  
  3. {  
  4.       return $content;   
  5. }    
  6. ?> 

  這樣做與方法2的效果是一樣的,模板中標簽也一樣。在 php文件中就不必要再register_block了,很方便。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved