就我而言,我有一个控制器,它查询然后使用 RedirectResult 转发用户,它实际上做了一个标题“位置”。
然后我像这样将缓存应用于控制器
[OutputCache(Duration = int.MaxValue, VaryByParam = "none", NoStore=false)]
我尝试重新运行该页面,并检查我的 Linq 分析器,我仍然能够看到该页面的所有查询都像 1 秒一样重新运行。
我怎样才能防止这种情况发生?
就我而言,我有一个控制器,它查询然后使用 RedirectResult 转发用户,它实际上做了一个标题“位置”。
然后我像这样将缓存应用于控制器
[OutputCache(Duration = int.MaxValue, VaryByParam = "none", NoStore=false)]
我尝试重新运行该页面,并检查我的 Linq 分析器,我仍然能够看到该页面的所有查询都像 1 秒一样重新运行。
我怎样才能防止这种情况发生?
您可以进行手动缓存,而不是使用输出缓存,这将缓存您的查询:
public IQueryable<Category> FindAllCategories()
{
if (HttpContext.Current.Cache["AllCategories"] != null)
return (IQueryable<Category>)HttpContext.Current.Cache["AllCategories"];
else
{
IQueryable<Category> allCats = from c in db.Categories
orderby c.Name
select c;
// set cache
HttpContext.Current.Cache.Add("AllCategories", allCats, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 0, 30, 0, 0), System.Web.Caching.CacheItemPriority.Default, null);
return allCats;
}
}