2017-05-25 156 views
0

這更像我試圖找出最乾淨的方式來獲得/存儲/在.NET核心檢查數據對象MVC.NET核心MVC - 會話存儲

的情況是作爲一個討論的例如:

的問題

用戶登錄到Web應用程序 - >創建一個用戶對象服務火災(強類型的列表) 該用戶對象控制應用程序的外觀和感覺,所有的數據在列表靜態的。

此列表被分配給ViewBag並用於Razor頁面。

唯一的問題是每次後續頁面更改或刷新時,用戶對象再次被拉出。

有些人可能不認爲它是壞的,但這個對象一般需要大約7秒火回客戶端渲染頁面,每一個開始變得相當痛苦的頁面上!

旨意解決方案

所以我的理論是,加載用戶模型一次,包括被稱爲「LastLoaded」,然後寫與當前日期時間的用戶模型,以某種形式在MVC會話存儲的DateTime字段。

然後有檢查LastLoaded領域的每一頁上的一些代碼,如果DATEDIFF是說,大於10分鐘,重新加載用戶對象。

所以我需要知道的是存儲MVC List對象和有它生存的頁面加載和刷新的最佳方法。那麼如何檢索該用戶對象並將其應用於ViewBag。

我給的建議非常開放的,即使我的前提是有缺陷的,也有實現這一目標的更好方式。如果您在過去遇到過這個問題以及您實施了哪些解決方案,請告訴我。

Caz

+0

除了在ViewBag中傳遞數據集而不是通過一個單獨的服務調用加載頁面之後,該頁面被加載呢?這聽起來像是你想將這些數據的管理卸載到客戶端,所以客戶端負責獲取/管理這些數據(不管是作爲cookie還是其他內部存儲) – AllMadHare

+0

嘿@ AllMadHare使用API​​調用和本地存儲爲其他許多事情做到了這一點。雖然如果我這樣做的用戶對象這種渲染剃刀無用,這是我的主要擔心,這樣做,我實際上使用HTML網頁和jQuery與Web API項目在後臺。我還擔心,一旦我使用js去本地存儲,我會丟失我的強壯模型 – Caz1224

回答

0

而不是會話,我會建議使用分佈式緩存。分佈式緩存,如Redis或NCache http://www.alachisoft.com/ncache/或AppFabric Cache。這些技術專門用於處理這種情況,它們具有易於集成的庫。通過使用分佈式緩存,您可以使您的應用程序和緩存獨立擴展。他們還配備了性能工具來監視緩存的使用情況和性能。

理想情況下,我會保持對象緩存中,當我修改的對象,我會繼續前進,把對象緩存修改後,假設我將再次立即對其進行訪問。

這些緩存提供各種緩存超時設置,因此不會經常訪問的舊對象會自動刪除。

雖然會議是每個用戶和緩存是每個人,你可以很容易地通過與用戶ID前綴它改變你的緩存鍵。

+0

哇,這看起來很滿,因爲我之前沒有碰過它,所以必須做一堆閱讀這些東西。表面上看起來像我想要做的,所以我會標記正確的。時間打這​​些東西的書! – Caz1224