我們正在使用Blazor(服務器端)和.NET 5來開發一個新的解決方案,該解決方案需要使用會話來消除對資料庫的往返訪問,以獲得完全相同的資料。
我們目前正在使用推薦的ProtectedBrowserStorage模型,但是當我們試圖存盤一個相對較大的資料集時,我們遇到了瀏覽器的25MB限制。因此,當我們處理許多需要被終端用戶查看和操作的1000條記錄時,這可能并不理想。我們正試圖為終端用戶優化性能。這是一個連接的桌面場景。
在Blazor中是否有更好的方法來處理大型會話變數,而不受到客戶端瀏覽器的限制?
預先感謝。
uj5u.com熱心網友回復:
為了消除為了完全相同的資料而在資料庫中的往返次數。
你可以使用快取。這允許在會話/用戶之間共享資料(這可能是一種風險,要小心)。它還將減少 I/O。
快取是服務器端的,你的應用程式也在那里運行。所以它通常會更快。但不清楚你的記憶體限制(每個用戶)是什么。
uj5u.com熱心網友回復:
你可以使用IndexedDb,它在所有主要的瀏覽器中都被支持。
我在PWA中使用這個物件存盤db,但你也可以在Blazor服務器端應用或Blazor WASM客戶端應用中使用它。
索引資料庫的限制對于您和大多數情況下都不是問題。 瀏覽器負責管理資料,您只需決定如何重繪 資料的策略即可。
從這個庫開始https://github.com/amuste/DnetIndexedDb并嘗試一些樣本。
uj5u.com熱心網友回復:
根據你的需要,有幾種不同的方法可以做到這一點:
級聯引數。一個很好的視頻來介紹它的基礎知識 - https://www.youtube.com/watch?v=ZmDMKp1Q8kA一種AppState方法。一個關于它的好的視頻涵蓋了兩種不同的方式。https://www.youtube.com/watch?v=BB4lK2kfKf0
這兩種方法的主要問題是,它們仍然是由會話決定的,并且在重繪 或新標簽時將會消失。
我所知道的唯一其他解決方案是使用redis,這將保持資料,只要你想保持它,但它不會在blazor中。 這方面的視頻不錯。https://www.youtube.com/watch?v=UrQWii_kfIE
uj5u.com熱心網友回復:
這取決于你有多少個并發用戶,以及你的系統資源。
單子服務可以跨會話持續存在,你可以使用你想要的任何資料結構。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/319168.html
標籤:
