2012-07-13 89 views
0

我有一個查詢數據庫記錄的應用程序。這些記錄可能有成千上萬的數量,這可能會激發過程的記憶,並最終導致崩潰或響應速度緩慢。客戶端緩存C#表單應用程序

分頁查詢是一個解決方案,但記錄中的信息始終保持不斷變化。因此,爲了提供獨特的體驗,我們被迫在用戶提出查詢時顯示可用信息。

使用分頁可以動態更新從頁面移動到頁面的內容。我相信客戶端緩存可以解決這個問題。

我發現的一種方法是將結果以XML格式存儲到磁盤,並使用LINQ to XML進行查詢。是否有成熟的客戶端緩存機制可以與桌面應用程序(而不是web)工作

+0

你使用任何orm? – Rafal 2012-07-13 08:45:09

+0

@Rafal什麼是ORM? – sarat 2012-07-13 09:45:36

+0

對象關係映射器:實體框架或NHibernate。如果你是那麼你的性能問題可能是由無效使用引起的。 – Rafal 2012-07-13 09:49:00

回答

1

內存使用率真的不應該是一個問題,除非你是讓你的緩存無限增長。預先獲取用戶可能永遠看不到的太多頁面,或者保留用戶長時間未查看的頁面幾乎沒有什麼好處。動態獲取下一頁/上一頁將使性能保持較高水平,但您應該從緩存中清除已編輯或早於特定時間段的頁面。從緩存中清除只需要放棄對頁面的所有引用(例如從任何列表或字典中刪除它)並允許垃圾收集器執行其工作。

您還可以將WeakReference存儲到您的對象中,並讓垃圾收集器收集您的對象(如果需要的話),但是這會讓您更加無法控制未緩存的內容。

或者有一些非常好的第三方解決方案,特別是如果它的網格控制。 DevExpress grid controls具有出色的服務器模式,可處理性能良好的超大型數據集。