2016-08-18 61 views
0

我有一個非常大的c#網站,它分解爲單獨的應用程序和單獨的應用程序池,運行在同一臺服務器上。 (背景)我使用.net 4.6.x框架。 ASP.NET WebForms & MVC。一些應用程序池仍然使用「Classic」,而MVC應用程序使用「Integrated」。跨同一服務器上的多個應用程序池的MemoryCache的單個實例

我想在不同的應用程序中共享某些緩存的項目。我不希望每個應用程序都擁有自己的緩存副本。我只想要一個共享的緩存實例。

這裏是我的問題的心臟......

如何在同一臺服務器上共享MemeroyCache在所有我的應用程序池的單個實例?如果一個應用程序池將某些內容放入緩存中,我希望能夠從其他應用程序/池中檢索它。這是可能的還是我需要看看不同的技術。任何示例或建議都會很棒。 :)

預先感謝您!

回答

1

您可以創建一個單獨的Web Api項目,並在那裏託管您的MemoryCache實現。然後公開一個API,它可以從緩存中獲取/設置所有應用程序可以使用的項目。

雖然,這種方法有一些注意事項。例如,如果您使用MemoryCache.Default,則只要您的應用程序池存活,您的緩存就會一直存在 - 默認的應用程序池空閒超時時間爲20分鐘,小於1小時。我得到的是,我認爲你將不得不保持大量的應用程序池設置同步,我相信這會導致問題。

更好的方法是實現分佈式緩存。我建議使用RedisStackExchange.Redis客戶端。還有其他的選擇,如memcached

+0

是的,我實際上正在考慮web API方法。出於某種原因,我認爲MemoryCache會在應用程序池回收後停留。如你所說,我認爲更好的方法是像Redis這樣的分佈式緩存。謝謝你的迴應! – Zooly57

相關問題