引言 之前學習了一點關於緩存的東西,有控制器緩存、頁面緩存,又看到一篇文章是關於部分視圖緩存的內容。一下就是我的一些學習總結。 情景 假設有一個頁面A,這是一個靜態頁面除了頭條的輪播圖需要更新。那麼這個時候可以把整個頁面緩存,然後輪播圖那一塊用Html.Partial顯示。 首先頁面緩存設置為一個小 ...
引言
之前學習了一點關於緩存的東西,有控制器緩存、頁面緩存,又看到一篇文章是關於部分視圖緩存的內容。一下就是我的一些學習總結。
情景
假設有一個頁面A,這是一個靜態頁面除了頭條的輪播圖需要更新。那麼這個時候可以把整個頁面緩存,然後輪播圖那一塊用Html.Partial顯示。
首先頁面緩存設置為一個小時
然後頁面顯示輸出時間
具體效果如上,在60分鐘內刷新時間都是不會改動的。這個時候整個頁面就是緩存60分鐘。
部分視圖緩存
將Index頁面的緩存過濾器移除。新增一個Html的拓展項:
public static class CacheExtensions { public static string Cache(this HtmlHelper htmlHelper,string cacheKey,CacheDependency cacheDependencies,DateTime absoluteExpiration,TimeSpan slidingExpiration,Func<object> func) { var cache = htmlHelper.ViewContext.HttpContext.Cache; var content = cache.Get(cacheKey) as string; if (content == null) { content = func().ToString(); //SqlCacheDependency sqldependency = new SqlCacheDependency(); //SqlCacheDependency.CreateOutputCacheDependency("UserCacheDependency:UnionInf")這個就是之前寫在webconfig裡面的配置數據 var path = System.AppDomain.CurrentDomain.BaseDirectory; cache.Insert(cacheKey, content,new CacheDependency(path+"/Exam/Name.txt") , absoluteExpiration, slidingExpiration); } return content; } }
現在是依賴與當前目錄下的Name.txt文件,即如果文件被改動緩存就會失效。如果要用Sql依賴則可以使用上述備註的內容。
然後頁面代碼修改如下:
最終的效果如下:
原文鏈接:http://www.cnblogs.com/JeffreyZhao/archive/2009/09/17/aspnet-mvc-fragment-cache-1.html