什麼是最有效的方式來使ASP.NET MVC應用程序web farm準備就緒。使ASP.NET MVC應用程序Web Farm準備就緒
最重要的是共享當前用戶的信息(上下文)和(不太重要的)緩存對象,如查找項目(國家,街道類型,縣等)。
我聽說過/讀過MemCache,但沒有看到如何實現和測試它的簡單適用方法(文檔)。
什麼是最有效的方式來使ASP.NET MVC應用程序web farm準備就緒。使ASP.NET MVC應用程序Web Farm準備就緒
最重要的是共享當前用戶的信息(上下文)和(不太重要的)緩存對象,如查找項目(國家,街道類型,縣等)。
我聽說過/讀過MemCache,但沒有看到如何實現和測試它的簡單適用方法(文檔)。
請求上下文
擊中Web場得到由可用的IIS服務器提供任何請求。上下文在那裏創建,整個請求由同一臺服務器提供。所以上下文不應該是一個問題。請求是無狀態的執行管道,因此它不需要以任何形式或形式與其他服務器共享數據。它將由同一臺機器從頭到尾提供服務。
用戶信息從cookie中讀取並由提供請求的服務器處理。這取決於如果你緩存完整的用戶對象的地方。
會議
如果使用TempData
字典,你應該知道,它裏面存放的Session
字典。在服務器場中,意味着您應該使用除InProc會話之外的其他方式,因爲它們不在整個服務器場中的IIS服務器之間共享。您應該配置使用數據庫或其他的其他會話管理器(狀態服務器等)。
緩存
說到緩存,它是一個不同的故事。爲了儘可能提高緩存效率,還應該提供服務。默認情況下不是。但看緩存幾乎沒有意味着當沒有緩存時,它應該被讀取並存儲在緩存中。所以如果一個特定的服務器場服務器沒有一些緩存對象,它會創建它。及時他們都會緩存一些共享的公開使用的數據。
或...你可以使用像這樣的庫,memcached(就像你提到的那樣)並利用共享緩存。網上有幾個例子說明如何使用它。
但是,這些解決方案如果沒有其他任何東西都會帶來額外的開銷(如網絡和第三個進程處理和數據提取等)。所以默認緩存是最快的,如果你明確需要共享緩存,那就選擇一個。除非確實需要,否則不要共享緩存。