2012-12-11 58 views

回答

8

HttpRuntime.Cache在進程中(即在服務器內存中)運行,並且不能在多個Web服務器之間共享。您可以使用自定義提供程序擴展所提及的System.Runtime.Caching,以使用諸如SQL Server或專用服務器等平臺集中緩存。

推薦的多Web服務器緩存策略肯定取決於環境。

在規模的低端,使用SQL Server是.NET開發人員可能熟悉的快速選項。另一種選擇是使用Web服務(例如WCF)集中緩存的數據調用。

在較高端,您提到了領域的領導者:memcached,AppFabric,Redis等。如果這些已經在您的環境中設置和/或您熟悉它們,我一定會在您看到時使用它們有多個Web服務器(大或小)。

我推薦至少檢查一下Redis。它是所提到的小組中的新類別,但它輕巧,快速,除了鍵/值存儲之外,它還具有對分佈式系統(如pub/sub)非常有用的其他功能。

+0

很酷,我預料它不能只是想要它在這裏陳述。我猜'內存中'的意思真的意味着'進程中',因爲memcached,AppFabric,Redis當然都在內存中。我想知道的是,如果HttpRuntime.Cache有一些簡單的獨立進程模式,如ASP.NET會話狀態 – Darren

+0

...我想你總是可以用自己的'獨立的流程'來使用它......但爲什麼要重新發明輪子。 – Darren

+0

是的,進行中是一個更合適的術語(我將編輯)。僅供參考,Redis默認使用持久性存儲操作......但是,您可以將其切換爲嚴格在內存中運行。與競爭對手相比,它的持續性和功能性仍然非常快。 –

1

.Net的System.Runtime.Caching api提供抽象類ObjectCache,它提供訪問對象緩存的基本方法和屬性。只有在.Net中提供的這個抽象類的實現是MemoryCache這是一個進程內緩存,不能在多個Web服務器之間共享。

或者對於開箱即用的解決方案,您可以使用爲分佈式緩存提供ObjectCache實現的分佈式緩存解決方案。 NCache是分佈式緩存解決方案,提供的ObjectCache實現的一個,如所描述here

的nCache已開發.NET 4.0緩存導致一個非常快速和高度可擴展的.NET分佈式緩存提供商。這使得使用.NET 4.0 Cache的應用程序現在可以擴展到多服務器環境,並且還可以消除任何數據庫瓶頸。 您可以將NCache作爲.NET分佈式緩存加入,而不需要對應用程序進行任何代碼更改。您只需將您的配置文件更改爲使用NCache。

相關問題