首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ASP.NET MVC中支持ETags?

如何在ASP.NET MVC中支持ETags?
EN

Stack Overflow用户
提问于 2009-06-02 02:22:23
回答 2查看 25.7K关注 0票数 65

如何在ASP.NET MVC中支持ETags?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-16 00:08:07

@Elijah Glover's answer是答案的一部分,但并不是真正完整的。这将设置ETag,但如果不在服务器端进行检查,您将无法获得ETags的好处。您可以使用以下命令来实现:

代码语言:javascript
复制
var requestedETag = Request.Headers["If-None-Match"];
if (requestedETag == eTagOfContentToBeReturned)
        return new HttpStatusCodeResult(HttpStatusCode.NotModified);

此外,另一个技巧是您需要设置响应的可缓存性,否则默认情况下它是“私有的”,并且不会在响应中设置ETag:

代码语言:javascript
复制
Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);

下面是一个完整的例子:

代码语言:javascript
复制
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
}
票数 46
EN

Stack Overflow用户

发布于 2009-06-02 02:32:57

在MVC中的ETAG与WebForms或HttpHandlers是一样的。

你需要一种方法来创建ETAG值,我找到的最好的方法是使用文件MD5或ShortGuid

由于.net接受字符串作为ETAG,因此可以使用以下命令轻松设置它

代码语言:javascript
复制
String etag = GetETagValue(); //e.g. "00amyWGct0y_ze4lIsj2Mw"
Response.Cache.SetETag(etag);

来自MIX的视频,最后他们使用了ETAG的REST

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/937668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档