Programing

ASP.NET MVC에서 ETag를 어떻게 지원합니까?

lottogame 2020. 12. 2. 07:43
반응형

ASP.NET MVC에서 ETag를 어떻게 지원합니까?


ASP.NET MVC에서 ETag를 어떻게 지원합니까?


@Elijah Glover의 답변답변의 일부이지만 실제로 완전하지는 않습니다. 이렇게하면 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
}

MVC의 ETAG는 WebForms 또는 HttpHandlers와 동일합니다.

ETAG 값을 생성하는 방법이 필요합니다. 내가 찾은 가장 좋은 방법은 File MD5 또는 ShortGuid를 사용하는 입니다.

.net은 문자열을 ETAG로 허용하므로 다음을 사용하여 쉽게 설정할 수 있습니다.

String etag = GetETagValue(); //e.g. "00amyWGct0y_ze4lIsj2Mw"
Response.Cache.SetETag(etag);

MIX의 비디오 , 마지막에는 REST와 함께 ETAG를 사용합니다.

참고 URL : https://stackoverflow.com/questions/937668/how-do-i-support-etags-in-asp-net-mvc

반응형