一、 緩存原理:
IE:將資源文件保存至本地
Smarty:將緩存保存到服務器
編譯 < 緩存 < 靜態
二、 為什麼使用緩存技術
1、提升網站訪問速度
2、減輕web服務器壓力
3、減輕數據庫服務器壓力
三、 設置緩存
1、在smarty中,設置緩存主要通過以下幾行代碼:
l $smarty->setCacheDir($cache_dir)
設置緩存目錄
將來生成的緩存文件會自動放在這個目錄下
l $smarty->caching=true
開啟緩存機制
只要使用想緩存技術,必須在display方法調用之前開啟緩存機制,(清除緩存不要開啟)
l $smarty->cach_lifetime=3600
設置緩存有效時間(生命周期),
默認是3600秒(一小時),可以做適當調整
2、代碼部分:
程序代碼:
模板代碼:
運行以上程序之後,我們發現在當前目錄下,自動產生兩個文件夾:
其中templates_c和cache分別表示編譯和緩存目錄,並且它們是自動創建的
但是強烈建議大家,不要過度依賴自動創建功能,因為在有些操作系統中,默認沒有創建權限,所以建議我們在運行之前手動創建這兩個目錄
3、觀察這兩個文件區別:
編譯文件:
緩存文件:
通過觀察,我們發現,在編譯文件中,關於模板變量的值是每次通過PHP程序動態讀取的
在緩存文件中,這兩個變量的值是直接寫到文件中的
4、緩存是指針對模板的緩存
我們可以嘗試創建其它php程序,讓這些程序再次顯示上面這個模板,發現這些程序只會直接運行以上程序產生的緩存文件
5、Smarty緩存工作原理:
6、兩個相關的屬性
$smarty->compile_check
默認值為true,表示每次執行時,都會檢查模板是否改變,如果改變,則重新讀取,再生成編譯和緩存文件。但是,一個項目上線之後,模板基本上是不會有改動的或不經常動的,每次都判斷會影響系統性能,所以在項目上線之後,建議大家關閉此選項(設置為false)。
$smarty->force_compile
默認值是false,表示每次執行時,都會檢查緩存是否過期,如果沒有過期,則直接使用緩存文件的內容。但是,一個項目開發時,緩存會影響程序員對程序最直接的判斷,會影響觀察最新的數據。建議大家將此選項設置為true,表示每次運行時都重新生成編譯和緩存文件。
四、檢查緩存
$smarty->isCached(“tpl.tpl”)
檢查某個模板是否具有緩存文件
實際應用:
五、 清除緩存
比如說,在一個商城系統裡,這件商品價格是1000.00,現在商城打折,打七折。如果使用緩存,但商品價格仍然是原來的價格。這時需要我們將以前的緩存文件刪除即可。
l $smarty->clearCache(“tpl.tpl”)
清除某個模板的緩存文件
l $smarty->clearAllCache()
清除所有模板的緩存文件
一個商品信息的改變了,需要重新生成該商品的緩存文件
一般情況下,修改數據,是需要重新生成緩存文件(要把原來的緩存文件刪除).