緩存分類:
片段緩存
頁面緩存
動态緩存
資料緩存
【商品清單和詳細頁面制作】
【片段緩存】
進行商品清單的獨立區域緩存,片段緩存
我們的緩存是檔案緩存,緩存的資訊在目錄runtime存放
使用緩存步驟:
1. 在程式裡邊設定緩存
2. 在主配置檔案main.php裡邊配置緩存元件cache(在這個地方決定使用哪種緩存)
設定緩存檔案的過期時間
Duration ()
我們為緩存檔案設定過期時間,在沒有過期的時候系統都會使用緩存檔案,如果已經過期,那麼系統要重新生成緩存檔案。
緩存變化:
我們的商品清單有實作片段緩存,那麼在通路其他其它頁碼資訊的時候也是通路這個緩存頁面,因為,每頁資訊的路由都是一樣的(goods/category),那麼系統會誤認為目前系統通路的頁面是一個頁面。當時頁面的page參數是不一樣的。
是以我們需要根據參數的變化生成不同的緩存檔案。
緩存依賴:
我們的商品資訊緩存可以自定義設定過期時間,根據具體需求業務類型決定,如果商品資訊在沒有過期之内已經變化了(資料庫給更改的),這時緩存檔案還沒有過期,我們需要及時更新緩存檔案(即使沒有過期)以免誤導客戶,這種情況我們可以通過緩存依賴來實作。
緩存依賴條件:我們依賴的條件是總的商品價格,如果總價格發生變化,那麼有可能是商品的資訊有增加或減少的情況,或商品價格被修改。
如果一個商品價格增加5元,另一個商品價格減少5元,這樣是不會更新緩存的,因為商品總價格沒有發生變化。
片段緩存步驟:
1. 在main.php裡邊設定cache元件
2. 實作片段緩存(beginCache endCache)
3. 緩存變化
4. 緩存依賴
Duration、varyByParam、dependency這個幾個屬性在哪?
System.web.widgets.CoutputCache.php
【頁面緩存】
1. 是否可以通過“頁面緩存”實作
答:這樣是不可以,因為布局檔案還沒有被緩存
2. 我們是否可以再布局進行頁面緩存
答:理論上不可以,視圖先加載,布局後加載
視圖:0.05135800 1369315232 時間小,先加載
布局:0.05197600 1369315232 時間打,後加載
使用者通路控制實作頁面緩存
Filters
accessControl
accessRules
【資料緩存】
具體就是可以緩存變量資訊
變量 緩存的使用
設定: Yii::app()->cache->set(名字,值,過期時間);
使用:Yii::app()->cache->get(名字);
删除:Yii::app()->cache->delete(名字);
清空:Yii::app()->cache->flush();
資料緩存應用(重要):
【動态緩存】
Smarty 動态緩存 insert
我們可以緩存整個頁面,但是隻有一個小的區域,會根據不同的條件顯示不同的資訊,這個小的區域我們需要設定動态緩存。
$this -> beginCache()
中間有區域需要動态緩存
回調函數:就是控制器裡邊的普通方法
$this -> renderDynamic(回調函數);
$this -> benCache()
這個show_name()控制器要放入普通控制器父類裡邊Controller,這樣代碼可以重複利用。
總結:
緩存
1. main.php配置緩存元件cache
2. 緩存類型:片段緩存、頁面緩存、資料緩存、動态緩存
3. 緩存存媒體:檔案、資料庫、記憶體
片段緩存:beginCache()
頁面緩存:filters過濾器實作
4. 具體變量緩存
Yii::app()->cache->set(名字,值,過期時間)
Get(名字)
Delete(名字)
Flush()清空緩存,(資料、片段、頁面都會清空)