c# – 在Azure上使用Web API缓存GET请求
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 在Azure上使用Web API缓存GET请求,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1741字,纯文字阅读大概需要3分钟。
内容图文
![c# – 在Azure上使用Web API缓存GET请求](/upload/InfoBanner/zyjiaocheng/800/fb9da4c20f7145659bc835454fe3ff8b.jpg)
我正在Azure平台上开发Web API RESTful服务.
我认为默认的客户端缓存行为是缓存GET请求(因为GET是幂等的全部).
令我惊讶的是,当我将服务部署到Azure时,所有响应都通过Cache-Control:私有标头或其他缓存禁用标头发送.
我尝试了建议in this question的解决方案,它在IIS本地工作,但是一旦我们部署到Azure就无法工作.我在文档中找不到任何关于此功能的内容,我认为这在RESTful服务中是非常基本的,我真的希望我遗漏了一些明显的东西,在MVC中它很容易.
TL;博士
我们需要在使用Azure和Web API时在客户端缓存GET请求.
解决方法:
我不相信Azure在这方面对你做了什么.这是您需要准确指定资源所需的缓存属性的问题.
使用WebAPI,您可以通过可通过myHttpResponseMessage.Headers.CacheControl属性访问的CacheControlHeaderValue来控制响应所具有的缓存属性.
假设您有一个像这样的控制器动作:
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.像往常一样,有很多方法可以让猫皮肤变色,你必须确定哪种方法最适合你的特定问题领域.
内容总结
以上是互联网集市为您收集整理的c# – 在Azure上使用Web API缓存GET请求全部内容,希望文章能够帮你解决c# – 在Azure上使用Web API缓存GET请求所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。