Pregunta

¿Cómo puedo apoyar ETags en ASP.NET MVC?

¿Fue útil?

Solución

de

@Elijah Glover respuesta es parte de la respuesta, pero no es realmente completa. Esto establecerá la ETag, pero no está obteniendo los beneficios de ETags sin comprobar que en el lado del servidor. Usted lo hace con:

var requestedETag = Request.Headers["If-None-Match"];
if (requestedETag == eTagOfContentToBeReturned)
        return new HttpStatusCodeResult(HttpStatusCode.NotModified);

Además, otro consejo es que usted necesita para configurar el almacenamiento en caché de la respuesta, de otro modo por defecto es "privado" y la ETag no se establecerá en la respuesta:

Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);

Así un ejemplo completo:

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
}

Otros consejos

de ETAG en MVC son los mismos que WebForms o HttpHandlers.

Se necesita una manera de crear el valor ETAG, la mejor manera que he encontrado está utilizando un archivo MD5 o ShortGuid .

Desde .net acepta una cadena como ETAG, se puede establecer fácilmente utilizando

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

El vídeo de MIX , al final de ETAG que utilizan con el descanso

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top