如何在C#WCF Rest服務上使用服務器端緩存?例如,我將大量數據生成到一個對象中(而不是通過數據庫),並且我不希望每一個(隨機)用戶都致電。我如何緩存對象。WCF緩存服務器端
驗證問題:HttpContext緩存對象是否僅在特定客戶端和主機之間是正確的?
如何在C#WCF Rest服務上使用服務器端緩存?例如,我將大量數據生成到一個對象中(而不是通過數據庫),並且我不希望每一個(隨機)用戶都致電。我如何緩存對象。WCF緩存服務器端
驗證問題:HttpContext緩存對象是否僅在特定客戶端和主機之間是正確的?
HttpContext緩存對象只是在特定的客戶端和主機之間是正確的嗎?
不,它是一個共享對象,按照msdn
沒有每個應用程序域Cache類的一個實例。作爲 結果,Cache屬性返回的Cache對象是應用程序域中所有請求的緩存對象 。
根據負載情況,還可以使用數據庫進行chaching(取決於您所稱的高速緩存)。也有在內存中專門針對分佈式緩存優化數據庫,請參見memchached,redis和Memcache vs. Redis?
的HttpContext.Cache
是本地的應用程序域,因此是由在應用程序域運行所有代碼共享。它對於大多數應用程序來說肯定是快速和靈活的。
如何使用它,取決於您的需求。您可以使用輸入參數的序列化版本作爲密鑰,例如,如下例所示:
public MyObject GetMyObject(int size, string cultureId, string extra)
{
// Input validation first
...
// Determine cache key
string cacheKey = size.ToString() + cultureId.ToString() + extra.ToString();
// rest of your code here
}