在asp.net中缓存gridview中的动态数据

时间:2014-01-06 14:52:34

标签: c# asp.net caching gridview

我有一个GridView的网页,该网页是从数据库表中填充的。用户可以点击列名称,这样可以选择不同的值,用户可以通过这些值选择过滤器。就像AutoFilter中的Excel选项一样。它基于用户过滤器选择构建动态查询并填充Gridview。

我要对此网页使用Caching机制,因为数据会在一天内更改一次。

当我选择第一次填充的过滤器时,我尝试使用<%@ OutputCache Duration=3600 VaryByParam="None" %>。但是当我选择进一步过滤时,IE会出错'Internet Explorer无法显示网页'

由于查询是动态的,我不确定此网页的缓存是否可行。请告诉我有没有其他机制来实现这一目标或提高网站性能。

1 个答案:

答案 0 :(得分: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;