我有一个GridView
的网页,该网页是从数据库表中填充的。用户可以点击列名称,这样可以选择不同的值,用户可以通过这些值选择过滤器。就像AutoFilter
中的Excel
选项一样。它基于用户过滤器选择构建动态查询并填充Gridview。
我要对此网页使用Caching
机制,因为数据会在一天内更改一次。
当我选择第一次填充的过滤器时,我尝试使用<%@ OutputCache Duration=3600 VaryByParam="None" %>
。但是当我选择进一步过滤时,IE会出错'Internet Explorer无法显示网页'
由于查询是动态的,我不确定此网页的缓存是否可行。请告诉我有没有其他机制来实现这一目标或提高网站性能。
答案 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;