在网格视图中缓存动态数据的 asp.net



我有一个网页,其中包含从数据库表填充的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;

最新更新