¿Cómo soporto ETags en ASP.NET MVC?¿Cómo soporto ETags en ASP.NET MVC?
Respuesta
de @Elijah Glover es parte de la respuesta, pero no realmente completa. Esto configurará el ETag, pero no obtendrá los beneficios de ETag sin verificarlo en el 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
}
ETAG de MVC en son los mismos que WebForms o HttpHandlers.
Necesita una forma de crear el valor ETAG, la mejor manera que he encontrado es utilizando un archivo MD5 o ShortGuid.
Desde .net acepta una cadena como ETAG, se puede establecer fácilmente usando
String etag = GetETagValue(); //e.g. "00amyWGct0y_ze4lIsj2Mw"
Response.Cache.SetETag(etag);
vídeo de MIX, en el extremo que utilizan ETAG de la RESTO
respuestaCreo que esto es un error! porque agregar un ETag estático sería como decir que su contenido nunca cambiará. La idea de ETags es dejar que el navegador sabe que el contenido ha cambiado, de forma similar a los encabezados de caducidad .. –
Creo que el valor harcoded es sólo para fines ilustrativos ... se puede crear algo sobre la marcha y cambiarlo. – Romias
De hecho. La sola mención de usar MD5 sugiere que se calcule (tal vez solo cuando se cambia o sobre la marcha cada vez) y se devuelve. Claramente, no es una sugerencia usar un valor estático. –
- 1. iOS: ¿Cómo soporto Retina Display con CGLayer?
- 2. ¿Cómo soporto las diferentes versiones de OpenGL?
- 3. cómo iis 7 genera etags
- 4. Cómo deshabilito programáticamente Etags en iis 6
- 5. ¿Por qué HttpCacheability.Private suprime ETags?
- 6. Temas Asp.Net MVC, ¿cómo?
- 7. ASP.NET MVC - ¿Cómo explicarlo?
- 8. ¿Cómo soporto OpenGL ES GL10, GL11 y GL20 en Libgdx?
- 9. Obtener ETags correctamente
- 10. ASP.NET MVC en IIS6
- 11. Html.TextAreaFor en asp.net mvc
- 12. Clojure Emacs etags
- 13. Personificación en ASP.NET MVC
- 14. ¿Cómo usar magia de concha para crear un etags recursivo usando GNU etags?
- 15. LinkButton en ASP.NET MVC
- 16. ReturnUrl en ASP.NET MVC
- 17. HTML.Button en ASP.NET MVC
- 18. ASP.NET MVC en Mono
- 19. IronPython en ASP.NET MVC
- 20. ASP.NET MVC - ¿Cómo redireccionar seguro?
- 21. ¿Cómo lo soluciona asp.net mvc?
- 22. ¿Cómo funciona Url.Action Asp.net MVC?
- 23. ¿Cómo aprender JSP/MVC, con experiencia previa en ASP.Net MVC?
- 24. ASP.NET MVC: ¿Cómo usar páginas HTML estáticas en aplicaciones MVC?
- 25. ¿Cómo presento entrada deshabilitada en ASP.NET MVC?
- 26. ¿Cómo implementa la paginación en ASP.NET MVC?
- 27. ¿Cómo hacer zonas horarias en ASP.NET MVC?
- 28. En ASP.NET MVC, ¿cómo funciona response.redirect?
- 29. Cómo integrar CKEditor en Asp.net MVC
- 30. ¿Cómo pruebo un ActionFilter en ASP.NET MVC?
Esta es una buena respuesta, para aquellos que deseen implementar esto, yo recomendaría la aplicación de un ActionFilter abstracta que implementa esta lógica prueba y un método abstracto llamado "cadena abstracta CalculateEtag (HttpRequest)", la subclasificación que para cada caso en el que necesita Etag apoyo. Esto mantendrá sus métodos de acciones "delgados" y facilitará la prueba de generación de etag. –
¿Qué es store in eTagOfContentToBeReturned? cómo generar etag para cada acción? –