2011-12-28 63 views
0

我正在研究使用我的.NET 3.5服務的企業緩存塊緩存來自數據庫的一堆靜態數據。使用企業緩存塊立即刷新整個緩存

從我讀過的一切來看,似乎FileDependency是存儲不會經常過期的靜態數據的最佳選擇。但是,當文件發生更改並刷新高速緩存時,我需要回調一次才能爲特定高速緩存執行一些後期處理。如果我在向緩存中添加一個項目的過程中實現ICacheItemRefreshAction並註冊它,我會爲它們中的每一個回調一個回調。

有沒有辦法爲整個緩存註冊一個回調,這樣當緩存刷新時我看不到成千上萬的回調被調用?

感謝

+0

作爲一個後續,是否有比使用FileDependency從數據庫中緩存靜態數據更好的方法。例如,如果我想緩存我們支持並駐留在數據庫上的國家及其貨幣代碼列表。除非我們手動在數據庫中插入新條目,否則這些數據不會更改。有更好的方式依賴我可以用來觸發更改並刷新緩存? – mvm 2011-12-28 23:30:28

回答

0

爲了解決你的跟進比FileDependency更好的方法:你可以在ICacheItemExpiration緊裹SqlDependency。有關示例代碼,請參見SqlCacheDependency with the Caching Application Block

該方法只適用於SQL Server,並需要設置Service Broker。

在高速緩存級別回調方面,我沒有看到實現這一點的開箱即用方式;幾乎所有東西都與物品等級相關。你可以做的是創建你自己的CacheManager實現,它具有緩存級別的回調。

另一種方法可能是讓ICacheItemRefreshAction只在緩存爲空時執行任何操作(即最後一項已被刪除)。