我想以某種方式在MVC中的動作級別實現緩存。自定義MVC3緩存篩選器屬性
我知道OutputCache屬性,但我無法緩存整個頁面。
我想緩存動作返回的模型。
所以基本上,我想要創建一個過濾器來阻止action方法被調用,但讓MVC的行爲就像被調用一樣。
假設我打算忽略任何「返回視圖(」視圖名稱「)」假設所有將「返回視圖()」。
我想以某種方式在MVC中的動作級別實現緩存。自定義MVC3緩存篩選器屬性
我知道OutputCache屬性,但我無法緩存整個頁面。
我想緩存動作返回的模型。
所以基本上,我想要創建一個過濾器來阻止action方法被調用,但讓MVC的行爲就像被調用一樣。
假設我打算忽略任何「返回視圖(」視圖名稱「)」假設所有將「返回視圖()」。
你可以做部分緩存。 例如,您可以調用Html.RenderPartial()作爲常規操作不調用的操作方法,而是呈現局部視圖(最終是HTML片段)。這樣,您不會緩存整個頁面,而只會緩存那些頻繁更改的片段。
您可以創建一個過濾器,從ActionFilterAttribute
繼承這是我使用
public class CacheControlAttribute : ActionFilterAttribute
{
public CacheControlAttribute(HttpCacheability cacheability)
{
_cacheability = cacheability;
}
private readonly HttpCacheability _cacheability;
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
HttpCachePolicyBase cache = filterContext.HttpContext.Response.Cache;
cache.SetCacheability(_cacheability);
cache.SetExpires(DateTime.Now);
cache.SetAllowResponseInBrowserHistory(false);
cache.SetNoServerCaching();
cache.SetNoStore();
}
}