2012-09-12 24 views
0

我們有一個MVC項目,它將處理顯示跟蹤記錄機制,該機制從幾個應用程序收集數據,這些應用程序都與一個主應用程序套件相關。跟蹤日誌記錄工具是一種服務,用於收集異常和其他各種日誌記錄信息,並將它們放入數據庫中供以後使用。這個MVC項目是該消費的一部分。MVC 3傳遞大數據(5MB)

正如我確信你可以告訴,有很多數據是通過實體/ LINQ返回的。現在開發人員正在獲取所有數據,並使用一個會話變量來保存這些數據(我認爲他說這就像是一個好的3-5 MB值的數據將被返回)。只有512條曲線被髮回到視圖/瀏覽器。然後,用戶可以通過AJAX調用鍵入的任何內容進行過濾。開發人員正在使用舊的Session [「name」]對象將數據放入並正在使用LINQ在服務器上對其進行過濾,以便每次選擇/鍵入過濾器時都不會觸及跟蹤服務。

它在本地工作,但不是遠程工作。我想在IIS上有一個問題,但還沒有研究過。

我想知道Sessions是否是像這樣的大數據的最佳方法,或者如果有更好的建議,而不是會話會更好..我知道MVC是無狀態的,我試圖保持它乾淨, TempData盡我所能,但不確定如何解決此問題,否則

+0

您使用會話來緩存服務中的數據嗎?或者你在做什麼會議? –

+0

會話用於緩存服務中的數據,以減少針對大量數據的服務的訪問量。然後MVC應用程序使用這個緩存的數據通過使用linq過濾(在這一點上實時不是問題) – gcoleman0828

+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; 
} 
+0

完美的TurnKey。我有一個關於使用HttpRuntime.Cache的博客。直到你的帖子我都沒有想過。再次感謝! – gcoleman0828