此特性可用於對不同的$_GET進行不同的快取。 二、清除smarty緩存 清除smarty快取一般有以下幾種方式:
三、全域快取 全域快取就是為整個網站的全部頁面產生快取頁面。設定全域快取首先我們要操作smarty的設定文件,開啟緩存,指定快取檔案目錄,並設定快取的存活時間,設定參數如下: $smarty->cache_dir='./cache/'; //設定存放快取檔案的資料夾 $smarty->caching=1;//開啟快取 0、FALSE代表關閉|非0數字、TRUE代表開啟 $smarty->cache_lifetime=3600//單位為秒(如果填寫-1為永不過期) 接下來我們要去具體的php頁面設定與之對應的特定快取檔案的名字,在php頁面中可如下寫法:
注意: $smarty->display('與之對應的範本檔案名稱','快取檔案名稱的補充部分')這個方法。 第二個參數不是必須的,如果不寫的話,快取檔案名稱就是模板檔案名稱經過加密處理後的檔案。但是這樣會碰到一個比較棘手的問題,例如: http://bbs.it-home.org/article.php?id=5 http://bbs.it-home.org/article.php?id=7 這兩個個URL對應應該的不同的內容,但是產生的快取檔案名稱都是 article 加密後的結果。這就會導致使用者想要查詢的是不同的內容,而存取的卻是同一個快取檔案。所以建議加上一個輔助參數,將存取url(包含?後面的所有參數)md5加密是比較可靠的一種做法。 四、部分緩存 部分快取就是指定一些文件產生快取文件,而非網站的全部文件。部分緩存的實質其實是部分不緩存,也就是說不是指定哪些檔案產生緩存,而是指定具體一些檔案不產生緩存。現在假設有3個文件: http://bbs.it-home.org/index.php //需要快取 http://bbs.it-home.org/cate.php //需要快取 http://bbs.it-home.org/article.php //不需要緩存 前面兩個檔案的php檔案裡面還是需要寫上$smarty->display('與之對應的範本檔案名稱','快取檔案名稱的補充部分')這句話。 但在第三個檔案中我們要特別指明不需要產生緩存,具體的方法是在display指定模板之前寫上下面這段程式碼: $smarty->clear_cache('與之對應的模板檔名');//其實寫在$smarty->display('與之對應的模板檔名')之前還是之後都可以 當然$smarty->display('與之對應的模板檔名')還是要寫,本來就不想產生緩存,第二個參數也就不需要了。 注意:$smarty->clear_cache()和$smarty->display()的參數一定要寫成一致的 五、局部緩存 局部快取就是指定同一頁面下的某些局部地方產生快取。其實它不是指定哪些局部生成緩存,而是哪些局部不產生緩存(這和部分緩存的操作思想是類似的)。我們先來看下面一個例子: article.php 檔案部分內容:
> 複製程式碼
這裡對上面的例子做一下解釋:在PHP中我們只要定義了函數名為insert_ (注意下劃線)自訂補充名的自訂函數,在其中傳回的值,不需要assign()方法傳遞,就能直接在模板頁面中以{insert name='自訂補充名'}的方式調用,同時不會受到快取的影響,而即時刷新。 如果你覺得使用 Smarty 快取不夠爽的話,還可以使用自訂緩存,如何使用自訂快取呢? 需要設定cache_handler_func使用自訂的函數處理緩存,如:
|