MVC 3传递大数据(5MB)

时间:2012-09-12 20:37:25

标签: asp.net-mvc linq session large-data

我们有一个MVC项目,它将处理显示跟踪日志记录机制,该机制从几个与一个主应用程序套件相关的应用程序中收集数据。跟踪日志记录工具是一种服务,它收集异常和其他各种日志记录信息,并将它们放在数据库中供以后使用。这个MVC项目是这种消费的一部分。

我相信你可以告诉我,有很多数据是通过Entity / LINQ返回的。现在,开发人员正在获取所有数据并使用会话变量来保存这些数据(我认为他说它就像一个价值3-5 MB的好数据正在返回。)。只有512条跟踪被发送回视图/浏览器。然后,用户可以通过AJAX调用按任何类型进行过滤。开发人员使用旧的Session [“name”]对象将数据放入并使用LINQ在服务器上对其进行过滤,以便每次选择/键入过滤器时他都不会访问跟踪服务。

它在本地工作,但不是远程工作。我认为IIS上存在问题,但还没有考虑过。

我想知道Sessions是否是像这样的大数据的最佳方法,或者是否有更好的推荐而不是更好的会话...我知道MVC是无状态的,我试图保持它除了TempData之外的任何东西尽我所能,但不确定如何解决这个问题

1 个答案:

答案 0 :(得分:1)

最好使用HttpRunTime.Cache存储数据,因为它具有灵活的过期方式,特别是如果跟踪对应用程序是全局的,例如。

private List<string> GetApplicationSuiteTraces() 
{
    List<string> applicationSuiteTraces = Cache["ApplicationSuiteTraces"];

    if(applicationSuiteTraces == null) 
    {    
       applicationSuiteTraces = Service.GetTraces();
       Cache.Add("ApplicationSuiteTraces", applicationSuiteTraces, null, DateTime.Now.AddSeconds(600), Cache.NoSlidingExpiration, CacheItemPriority.High, null);
    }

    return applicationSuiteTraces;
}