我不相信 Azure 在这方面对您有任何影响。您需要准确指定资源所需的缓存属性。
使用 WebAPI,您可以控制响应具有哪些缓存属性,这些属性CacheControlHeaderValue
可通过myHttpResponseMessage.Headers.CacheControl
属性访问。
假设您有这样的控制器操作:
public Foo Get(int id)
{
Foo myFoo = LoadSomeFooById(id);
return myFoo;
}
你需要做这样的事情来明确控制缓存:
public HttpResponseMessage Get(int id)
{
Foo myFoo = LoadSomeFooById(id);
HttpResponseMessage myHttpResponseMessage = this.Request.CreateResponse(HttpStatusCode.OK, myFoo)
CacheControlHeaderValue cacheControlHeaderValue = new CacheControlHeaderValue();
cacheControlHeaderValue.Public = true;
cacheControlHeaderValue.MaxAge = TimeSpan.FromMinutes(30);
myHttpResponseMessage.Headers.CacheControl = cacheControlHeaderValue;
return myHttpResponseMessage;
}
您期望的与缓存相关的许多其他属性也可以在CacheControlHeaderValue
该类中使用,这只是最基本的示例。
另外,请记住,我的示例非常暴力/简单,因为所有缓存行为/逻辑都在 action 方法中。一个更简洁的实现可能是拥有一个ActionFilterAttribute
包含所有基于属性设置的缓存逻辑并将其应用于HttpResponseMessage
. 然后您可以恢复到更以模型为中心的操作方法签名,因为在这种情况下,您将不再需要HttpResponseMessage
在该级别访问。像往常一样,给猫剥皮的方法有很多,您必须确定哪种方法最适合您的特定问题域。