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