2014-01-06 82 views
0

我有一個從數據庫表填充GridView的網頁。用戶可以點擊列名,通過它可以選擇不同的值,用戶可以通過它選擇過濾器。就像我們在Excel中有AutoFilter選項一樣。它基於用戶篩選器選擇和填充Gridview來構建動態查詢。在asp.net中爲GridView中的動態數據緩存

我必須使用Caching這個網頁的機制,因爲數據會在一天內更改一次。

我嘗試使用<%@ OutputCache Duration=3600 VaryByParam="None" %>當我第一次選擇它填充的過濾器時。但是,當我選擇進一步的過濾器,IE瀏覽器給出了錯誤'Internet Explorer無法顯示網頁'

我不確定緩存是否可行,因爲查詢是動態的。請讓我知道是否有任何其他機制來實現這一目標或提高網站的性能。

回答

0

在這種情況下輸出緩存不是你想要的,它緩存頁面的HTML輸出,所以ASP.NET不必重新生成它。

這聽起來像你正在尋找Cache類可以容納任意對象的時間。

根據查詢速度有多快,您可以緩存整個數據集,然後使用LINQ進行過濾,也可以存儲從SQL Server獲得的過濾版本。

我使用它是這樣的:

var cachedList = HttpContext.Current.Cache["cacheKey"]; 
if (cachedList == null) 
{ 
    var db = new YourDataContext(); 

    //get your data from the db here somehow 
    cachedList = db.table 
     .Where(x => true) 
     .ToList(); 

    HttpContext.Current.Cache.Add(
     "cacheKey", 
     cachedList, 
     null, 
     DateTime.Now.AddMinutes(10), 
     System.Web.Caching.Cache.NoSlidingExpiration, 
     CacheItemPriority.Normal, 
     null); 
} 
return (List<YourDataType>)cachedList; 
+0

我會嘗試這個..感謝您的建議! – Interstellar