一位朋友让我使用Output Cache
缓存数据,效果很好,但问题是我想从数据库中获取数据,然后与该数据进行交互,我的意思是,我想抓住一个来自数据库的大量数据,然后根据用户活动动态地从这些巨大数据中获取一些数据。
[OutputCache(Duration =600, VaryByParam ="none")]
public ActionResult GetData()
{
var result = context.People.ToList();
return View(result);
}
这是一个例子,但是我想说我想在我的视图中对这些数据使用分页,并且我想根据出生日期显示每个人,例如默认页面当前周,并使用名为“Next”的链接和其他一个叫'上一个'。当点击“下一步”链接时,我想只显示下周的生日,与“上一页”相同的内容,只显示前一周有生日的人。 但是使用输出缓存我一直在显示相同的数据......是否有可能只在第一次与数据库交互时,缓存该数据,然后与该数据进行交互,而不是在数据库中再次读取数据我设定持续时间的时间??你建议我使用另一种不同于输出缓存的缓存工具吗?
答案 0 :(得分:-1)
您可以将结果添加到会话状态,而不是缓存整个视图吗?
public ActionResult GetData()
{
if (HttpContext.Current.Session["peopleList"] != null)
{
return View((List<People>)HttpContext.Current.Session["peopleList"]);
}
else
{
var result = context.People.ToList();
HttpContext.Current.Session["peopleList"] = result;
return View(result);
}
}
您可以控制会话状态在Web.config或IIS中持续的时间。