如何在ASP.NET MVC中支持ETags?如何在ASP.NET MVC中支持ETags?
59
A
回答
41
@Elijah Glover的答案的一部分答案,但并不完全。这将设置ETag,但是如果不在服务器端检查ETag,您将无法获得ETag的好处。你这样做有:
var requestedETag = Request.Headers["If-None-Match"];
if (requestedETag == eTagOfContentToBeReturned)
return new HttpStatusCodeResult(HttpStatusCode.NotModified);
此外,另一个技巧是,你需要设置响应的缓存能力,否则默认情况下它是“私人”和ETag的会不会在响应中设置:
Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);
所以,一个完整的例子:
public ActionResult Test304(string input)
{
var requestedETag = Request.Headers["If-None-Match"];
var responseETag = LookupEtagFromInput(input); // lookup or generate etag however you want
if (requestedETag == responseETag)
return new HttpStatusCodeResult(HttpStatusCode.NotModified);
Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);
Response.Cache.SetETag(responseETag);
return GetResponse(input); // do whatever work you need to obtain the result
}
30
相关问题
- 1. youtube api v3/search支持etags吗?
- 2. 浏览器对eTags的支持
- 3. “ChartFX”是否支持asp.net mvc?
- 4. ASP.Net MVC支持Editor.For(模型)
- 5. Telerik ASP.NET MVC dropdownlist multiselect支持
- 6. ASP.NET MVC 1.0区域支持
- 7. 如何在asp.net中支持大尺寸内容mvc
- 8. 如何扩展WCF WebHttp(REST)以支持ETags和条件获取?
- 9. 支持Asp.Net MVC中的XmlResult&XmlValueProviderFactory?
- 10. 继续ASP.NET MVC 6中的Ninject支持?
- 11. 如果HTTP是无状态的,ASP.NET MVC如何支持会话?
- 12. 对嵌套资源的ASP.Net MVC支持?
- 13. Autofac 2.2和ASP.NET MVC 2.0区域支持
- 14. ASP.NET MVC 4的WebAPI支持多种HttpConfigurations
- 15. 支持Asp.NET MVC Razor的编辑器
- 16. ASP.NET MVC Url路由支持(点)
- 17. asp.net mvc支持什么方法?
- 18. 关键字不支持使用ASP.NET MVC
- 19. 支持Asp.Net的Web CMS mvc 2
- 20. JavaScript的意见支持asp.net mvc 3
- 21. 支持多租户的ASP.NET MVC 3 CMS?
- 22. 如何使用后退按钮支持创建ASP.NET MVC向导?
- 23. ASP.NET MVC如何与支持AJAX的网页进行通信?
- 24. ASP.NET MVC AuthorizeAttribute如何支持检查角色?
- 25. 如何本地化一个asp.net mvc webproject?语言支持
- 26. 如何使用jQuery和ASP.NET MVC支持循环引用的JSON?
- 27. 如何在ASP.NET MVC中使用回退来支持NTLM身份验证?
- 28. 如何在asp.net mvc路由中支持感性网址(Web表单类型)
- 29. ASP.NET MVC 2将在Visual Studio 2008/.NET 3.5中受支持吗?
- 30. asp.net的MVC 1.0 “项目类型不支持” 在Visual Studio 2008中
我认为这是错误的!因为添加静态ETag就好像说你的内容永远不会改变。 ETags的想法是让浏览器知道内容已经改变,类似于到期头文件。 – 2012-10-15 13:35:43
我认为编码值仅用于说明目的...您可以随时创建并更改它。 – Romias 2012-10-15 14:06:33