在ASP.net MVC中缓存数据

时间:2017-09-14 21:14:49

标签: c# asp.net-mvc caching

一位朋友让我使用Output Cache缓存数据,效果很好,但问题是我想从数据库中获取数据,然后与该数据进行交互,我的意思是,我想抓住一个来自数据库的大量数据,然后根据用户活动动态地从这些巨大数据中获取一些数据。

 [OutputCache(Duration =600, VaryByParam ="none")]
public ActionResult GetData()
{
var result = context.People.ToList();
return View(result);
}

这是一个例子,但是我想说我想在我的视图中对这些数据使用分页,并且我想根据出生日期显示每个人,例如默认页面当前周,并使用名为“Next”的链接和其他一个叫'上一个'。当点击“下一步”链接时,我想只显示下周的生日,与“上一页”相同的内容,只显示前一周有生日的人。 但是使用输出缓存我一直在显示相同的数据......是否有可能只在第一次与数据库交互时,缓存该数据,然后与该数据进行交互,而不是在数据库中再次读取数据我设定持续时间的时间??你建议我使用另一种不同于输出缓存的缓存工具吗?

1 个答案:

答案 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中持续的时间。