我們正在研究分佈在3個負載平衡Web服務器上的Web應用程序。我們通過NHibernate獲取的大量數據存儲在System.Web.Caching.Cache
中。當我使用3個Web服務器時,如何管理存儲在Web服務器上的緩存?
System.Web.Caching.Cache
做了很多提高應用程序的響應能力,但也有一些問題,我們並不確切地知道如何解決,如
當用戶請求server1的數據數據緩存在server1上,但是對於下一個請求,負載平衡器可能會將它們指向server2。他們在server1上請求的數據不再可用,server2將不得不再次從數據庫請求它。
如果用戶在server1上執行某些操作以使緩存的數據無效,則會在server1上刷新緩存。但是server3的server2 &服務器仍然可以使用原始緩存,所以當用戶提交後續請求並將其導向其他服務器時,它們將顯示無效數據。
我們有定期更新數據(例如性能數據)的應用程序。性能數據更新時,我們希望從緩存中清除此數據,以便用戶再次請求數據時,會向他們顯示最新數據。我們如何讓這些應用程序清除3臺Web服務器上的緩存?
解決這些問題的最佳方法是什麼?
我們是否應該使用SessionState服務器將緩存存儲在單獨的服務器上,例如我們可以使用HttpContext.Session
?
有沒有辦法讓我們在其他2臺服務器上的緩存上設置Cache Dependency?
我們有可能在實際的數據庫表或行上實現緩存依賴關係嗎?當這些更改緩存刷新? - 或者我們可以設置一個數據庫觸發器來刷新緩存嗎?