tag route net for data asp all asp.net-mvc etag

asp.net-mvc - route - select asp-for asp-items



¿Cómo soporto ETags en ASP.NET MVC? (2)

La respuesta de @Elijah Glover es parte de la respuesta, pero no está completa. Esto configurará el ETag, pero no obtendrá los beneficios de ETag sin verificarlo en el servidor. Haces eso con:

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

Además, otro consejo es que debe establecer la capacidad de almacenamiento en caché de la respuesta, de lo contrario, de forma predeterminada es "privada" y ETag no se establecerá en la respuesta:

Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate);

Entonces 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 }

¿Cómo soporto ETags en ASP.NET MVC?


Los ETAG en MVC son lo mismo que WebForms o HttpHandlers.

Necesita una forma de crear el valor ETAG, la mejor forma que he encontrado es utilizando un archivo MD5 o ShortGuid .

Como .net acepta una cadena como ETAG, puede configurarla fácilmente usando

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

Video de MIX , al final usan ETAG''s con REST