2015-02-06 35 views
2

如果您使用以下策略:數據庫緩存失效策略和時機

  • 的應用程序級緩存(類似的System.Web.Caching.Cache)來存儲SQL查詢。
  • 每個緩存條目都存儲在與返回的行的主鍵綁定的CacheDependancy中。
  • 甲數據庫監聽監聽更改和無效高速緩存特定查詢時的行它是依賴於變化。

這工作得很好,但緩存顯然不立即失效,這在一些情況下存在問題。

一個例子是當用戶添加一個產品購物車。用戶將被帶到顯示購物車內容的新頁面。在這種情況下,緩存不會無效並且新添加的項目不會存在。如果你重新加載頁面,監聽器有時間運行,並且該項目現在在那裏。

我努力尋找到一個解決方案是通用的。這是緩存失效的缺點還是我錯過了什麼?

回答

1

一個通用的解決方案,所有緩存的情況是不可能的,你可能會得到更好的定製解決方案,以使用常用的方法,例如會話/ HttpContext的取決於你需要爲緩存對象期間您的應用程序。

類似購物車項目的東西可以放入會話中,只有請求持續時間才能緩存的項目可以使用HttpContext.Current.Items等。更常見的是,CacheDependency用於更多不經常更改的靜態項目,因此延遲沒關係。