[英]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.