如何在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
}