繁体   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