2011-06-23 22 views
1

我正在製作一個相當複雜的應用程序。它預計會在多個Web服務器上運行,否則這很容易。我應該多久緩存一個可隨時更改的對象?

基本上,我們有一組客戶記錄。每個客戶記錄都有一個XML列,其中包含所有「真實」數據,例如客戶名稱和其他動態製作的字段。我們的用戶可以隨時更新客戶的記錄。另外,我們有應用程序記錄。每個應用程序都綁定到多個客戶端。每個應用程序通常綁定到3個以上的客戶端。通常,每個客戶端的XML數據都大於5k文本。

在我所做的一些分析中,獲取和反序列化這個XML數據是一個相當昂貴的操作。在我們的Web應用程序的一部分中,我們必須具有非常低的延遲(related)。所以在這部分,我們的Web應用程序是一個JSON Web服務。當對它發出請求時,通常需要每個客戶端記錄(完整的,由於它目前的編碼方式)。我試圖在這部分儘可能少的數據庫命中。

我應該多久緩存客戶端記錄的XML對象?知道用戶可以隨時更改它,我不確定是否應該緩存它,但用戶可以使用稍微陳舊的數據嗎?

回答

2

除了在任何時間表上刷新緩存時,只需將訪問時任何關鍵記錄的最後修改日期與緩存值進行比較,這應該是非常便宜的操作。然後只在需要時更新緩存。

1

您可以將xml的散列存儲在數據庫中,以便客戶端驗證其緩存的XML。

然後,如果它不匹配,則無效緩存並檢索新的。

更新XML時,更新哈希值,然後您的客戶端會注意並更新其緩存。

1

也許你應該使用SqlCacheDependency來確保從緩存中刪除數據,並在數據庫發生更改時從數據庫重新加載數據。

相關問題