C# MVC簡單快取用法

PageOutputCache,ApplicationCache

分兩種快取

一種存頁面的快取(PageOutputCache),一旦有了頁面快取之後,就不會再去執行頁面後端(例如 MVC的Action就不會執行),就會以目前記憶體內的頁面給人使用

一種是將資料庫的物件存於快取裡面,下次再去取時候,就可以不用再去資料庫撈


第一種 頁面快取(MVC)

我只會簡單的.......

在我們的Action上面就直接增加OutputCache,裡面有很多參數可以使用,像現在這個 Duration ,這是以秒為單位計算,代表我要這頁面快取60秒

裡面屬性,

Duration,這個剛說哩

Location ,裡面有很多,應該是控制哪些情況下可以進行快取,不確定再去網路上找吧

CacheProfile 快取的名稱,這個是把你要設定的快取資訊都放至於Config底下

<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="XXXCache" duration="3600" ~~~~~ />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>

NoStore ,他是boolean,是否要快取

VaryByParam屬性,這比較常用到,是在於參數的快取,Get給的Query String,或是Post給予的參數,假設有指定一個Page參數,一旦有人使用到,就會建立一個快取起來,會建立起多個,不想指定參數就為none,如果是要所有參數變更都快取就打 * 星號要注意記憶體儲存大小,因為這樣會全部都快取,要多個參數請只用 分號格開 VaryByParam="Page;Count"

VaryByHeader,會依照你要的Header名稱帶回的資料相不相同去區分快取要不要再多一份,例如:VaryByHeader="User-Agent",因為大家瀏覽器會不一樣,所以當我都是Google同版本的,就會都用一樣快取,但如果一個是Google一個是IE,就會不相同

剩下一兩個之類的,其實我也不是很懂,就可能再請大家自己去看哩...

但OutputCache在清除上面有一些事項要注意的像是跟Routing有關的,可以參考 這 網址

另外注意的

Action在有ChildActionOnly屬性下,PartialView狀況下,只支援Duration、VaryByCustorm、VaryByParam


第二種資料庫的物件存於快取裡面

設定cache的方式

取得Cache的方式:Cache["你設定的名稱"] ,然後他是回傳object

建議在取得Cache時候,請這樣寫

這樣子取,避免有null的狀態,一旦發生null的時候就是重新取得,然後在重新加入Cache裡面

可參考保哥這篇說的正確的使用 ASP.NET 的 Cache 物件

移除Cache的方式:Cache.Remove("你設定的名稱");


有問題還請自己在去網路上解惑XD...不好意思,這主要都是給我自己當筆記用的XD