本地緩存我有兩個單獨的Web應用程序:同步與外部應用
- 其中創建數據和更新
- 其中顯示數據的「公共」應用程序「管理」應用程序。
顯示在「公共」上的信息很少變化,所以我想緩存它。
我正在尋找的是在管理站點中進行更改時更新公共站點上緩存的「最簡單可能的事情」。
爲了避免一些複雜性,應用程序在Windows Azure上運行。這排除了文件和sql緩存依賴關係(至少是內置的)。
我正在一個Web角色實例上運行這兩個應用程序。
我曾考慮過爲此使用Memcached。但由於我並不是真的在分佈式緩存之後,並且性能不如使用內存緩存(System.Runtime.Caching),所以我想盡量避免這種情況。我也考慮過使用NServiceBus(或Azure等價物),但再次,這似乎矯枉過正只是發送一個通知來清除緩存。
我在想什麼(也許有點哈克,但簡單):
- 有清除內存高速緩存中的公共網站上的控制器動作。我對清除特定的緩存項目沒什麼困擾,數據沒有變化足夠讓我擔心這一點。當「管理」應用程序創建緩存時,我們會在公共站點的清除緩存操作中創建一個httpwebrequest。
- 由於數據庫是兩個應用程序之間唯一的共享資源,只需添加一個包含上次更新日期時間的表。公共站點將對每個請求進行查詢,並將數據庫的上次更新日期時間與我們將在內存中保留的日期時間進行比較。如果它不匹配,那麼我們清除緩存。
上述選項的其他建議或問題?這裏關鍵的是簡單和高性能。
一般來說,我們使用redis來處理這種東西,它也爲我們提供了一條消息總線。在一個地方我使用了數據庫輪詢。 –