2014-04-08 520 views
2

如何在C#WCF Rest服務上使用服務器端緩存?例如,我將大量數據生成到一個對象中(而不是通過數據庫),並且我不希望每一個(隨機)用戶都致電。我如何緩存對象。WCF緩存服務器端

驗證問題:HttpContext緩存對象是否僅在特定客戶端和主機之間是正確的?

回答

2

HttpContext緩存對象只是在特定的客戶端和主機之間是正確的嗎?

不,它是一個共享對象,按照msdn

沒有每個應用程序域Cache類的一個實例。作爲 結果,Cache屬性返回的Cache對象是應用程序域中所有請求的緩存對象 。

根據負載情況,還可以使用數據庫進行chaching(取決於您所稱的高速緩存)。也有在內存中專門針對分佈式緩存優化數據庫,請參見memchachedredisMemcache vs. Redis?

0

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 
}