2017-09-14 115 views
0

一位朋友要求我使用Output Cache缓存数据,这很好,但问题是我想从数据库获取数据,然后与数据进行交互,我的意思是,我想要从数据库中获取大量数据,然后根据用户活动动态获取来自庞大数据的一些数据。在ASP.net中缓存数据MVC

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

这是一个例子,但让我们说,我想用分页在我看来这些数据,我想根据出生日期显示每个人,例如默认页面本周,有一个链接称为“下一个”,另一个称为“上一个”。点击'下一步'链接时,我想只显示下周的生日,与'上一次'相同的事情,只显示前一周的生日。 但是使用输出缓存我显示的是相同的数据是否可以一直......只有在第一次与数据库进行交互时,才能做到这一点,缓存该数据,然后与该数据进行交互,并在设置持续时间期间不再对数据库进行读取?你建议我使用与输出缓存不同的另一个缓存工具吗?

+1

阅读关于'VaryByParam'属性。 – hatchet

+1

如果你的分页,那么你将在方法中有一个参数,所以你缓存的时候该参数是相同的 –

回答

-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持续。