熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

手把手教你Smarty緩存技術

2013-11-15 12:28:27  來源: PHP編程 

    大家應該知道緩存機制能能有效的減輕網站的服務器壓力Smarty模板引擎的一大亮點就是為我們提供了非常簡單的緩存操作下面就讓我們學習一下

  
首先我們要知道Smarty緩存機制分為全局緩存部分緩存局部緩存三種我們一一介紹

  
全局緩存

  
顧名思義全局緩存就是為整個網站的全部頁面都生成緩存頁面

  
首先我們要操作smarty的配置文件開啟緩存指定緩存文件目錄並設置緩存的存活時間

  
$smarty>cache_dir = ‘/cache/’ //設置存放緩存文件的文件夾

  
$smarty>caching = //開啟緩存 FALSE代表關閉|非數字TRUE代表開啟

  
$smarty>cache_lifetime = //單位為秒(如果填寫為永不過期)

  
接下來我們要去具體的php頁面設置與之對應的具體緩存文件的名字

  
$url=md($_SERVER[REQUEST_URI])//將當前頁面的URL(包含?後面的所有參數)進行md加密

  
$smarty>display(‘listhtml’$url)//設置緩存文件名

  
需要注意的是

  
$smarty>display(‘與之對應的模板文件名’緩存文件名的補充部分’)這個方法

  
第二個參數不是必須的如果不寫的話緩存文件名就是講過加密處理的模板文件名

  
但是這樣會碰到一個比較棘手的問題

  
?lan=

  
?lan=

  
?lan=

  
個URL對應應該的不同的內容但是生成的緩存文件名都是listhtml加密後的結果

  
這就會導致用戶想要查詢的是不同的內容訪問的卻是同一個緩存文件

  
所以建議加上一個輔助參數將訪問url(包含?後面的所有參數)md加密是作者比較推薦的一種

  
部分緩存

  
首先了解什麼叫部分緩存其實就是指定一些文件生成緩存文件而非網站的全部文件

  
了解了需要達到的效果接下來我們就來具體操作

  
操作之前我們先要強調一個概念

  
部分緩存的實質其實是部分不緩存也就是說不是指定那些文件生成緩存而是指定具體一些文件不生成緩存

  
假設有個文件

  
php //需要緩存

  
php //需要緩存

  
php //不需要緩存

  
php/php文件中還是照舊寫上$smarty>display(‘與之對應的模板文件名’’緩存文件名的補充部分’)這個方法

  
但在php中我們要特別指明不需要生成緩存具體的方法是

  
$smarty>clear_cache(‘與之對應的模板文件名’)//寫在$smarty>display(‘與之對應的模板文件名’)之前還是之後都可以

  
當然$smarty>display(‘與之對應的模板文件名’)還是要寫本來就不想生成緩存第二個參數也就不需要了

  
$smarty>clear_cache()和$smarty>display()的參數一定要寫成一致的

  
局部緩存

  
首先讓我們了解下局部緩存的意思就是指定同一頁面下的某些局部地方生成緩存

  
同樣的在這裡我們也要把思路反轉一下

  
其實不是指定哪些局部生成緩存而是哪些局部不生成緩存(這和部分緩存的操作思想是類似的)

  
話不多說先舉一個實例

  
php

  
$time=time()

  
$smarty>assign(‘time’$lanmuarr)

  
function insert_timeget()

  
{

  
return time()

  
}

  
$smarty>display(’html’)

  
html

  
{$time}

  
//開啟緩存後重復刷新這個不會變

  
{insert name=’timeget’}

  
//開啟緩存後重復刷新這個會變

  
看懂了這個例子我們來解釋下其中的原理

  
PHP中我們只要定義了

  
函數名為insert_自定義補充名的自定義函數在其中返回的值不需要assign()方法傳遞就能直接在模板頁面中以{insert name=’自定義補充名’}的方式調用同時不會受到緩存的影響而實時刷新

  
好了到這裡我們關於smarty的中緩存方式就全部講解完了有興趣的朋友可以自己試驗下不同的效果


From:http://tw.wingwit.com/Article/program/PHP/201311/21023.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.