【问题标题】:Caching in asp.net for dynamic data in gridview在asp.net中缓存gridview中的动态数据
【发布时间】:2014-01-06 14:52:34
【问题描述】:

我有一个带有GridView 的网页,它是从数据库表中填充的。用户可以单击列名,它提供了一个不同值的选项,用户可以通过该选项选择过滤器。就像我们在Excel 中有AutoFilter 选项一样。它正在构建基于用户过滤器选择和填充 Gridview 的动态查询。

我必须为此网页使用Caching 机制,因为数据每天会更改一次。

当我第一次选择它填充的过滤器时,我尝试使用<%@ OutputCache Duration=3600 VaryByParam="None" %>。但是当我选择进一步过滤时,IE 给出错误 'Internet Explorer cannot display the pages'

我不确定缓存是否适用于此网页,因为查询是动态的。请让我知道是否有任何其他机制可以实现这一目标或提高网站性能。

【问题讨论】:

    标签: c# asp.net caching gridview


    【解决方案1】:

    在这种情况下,输出缓存不是您想要的,它会缓存页面的 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 2015-05-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      相关资源
      最近更新 更多