簡體   English   中英

在asp.net中緩存GridView中的動態數據

[英]Caching in asp.net for dynamic data in gridview

我有一個帶有GridView的網頁,該網頁是從數據庫表中填充的。 用戶可以單擊列名,該列名提供了不同值的選項,用戶可以通過它們選擇過濾器。就像在Excel具有AutoFilter選項一樣。 它基於用戶篩選器選擇構建動態查詢並填充Gridview。

我必須對此網頁使用Caching機制,因為數據每天都會更改一次。

當我選擇第一次填充的過濾器時,我嘗試使用<%@ OutputCache Duration=3600 VaryByParam="None" %> 但是,當我選擇進行進一步的過濾時,IE會顯示錯誤消息“ Internet Explorer無法顯示該網頁”

由於查詢是動態的,因此我不確定此網頁的緩存是否可行。 請讓我知道,還有其他機制可以實現此目的或增強網站性能。

在這種情況下,輸出緩存不是您想要的,它緩存頁面的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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM