Codificación de transferencia: gzip vs. Codificación de contenido: gzip
¿Cuál es el estado actual de las cosas cuando se trata de hacer?
Transfer-Encoding: gzip
o un
Content-Encoding: gzip
cuando quiero permitirclientela con por ejemplo ancho de banda limitado aSeñalar su disposición a aceptar una respuesta comprimida. y elEl servidor tiene la última palabra para comprimir o no.
Lo último es lo que p. El mod_deflate e IIS de Apache lo hacen, si dejas que se encargue de la compresión. Dependiendo del tamaño del contenido a comprimir, hará el adicionalTransfer-Encoding: chunked
.
También incluirá unVary: Accept-Encoding
, que ya alude al problema.Content-Encoding
Parece ser parte de la entidad, por lo que cambiar laContent-Encoding
equivale a un cambio de la entidad, es decir, una diferenteAccept-Encoding
encabezado significa, por ejemplo, un caché no puede usar su versión en caché de la entidad de lo contrario idéntica.
¿Hay una respuesta definitiva a esta pregunta que haya omitido (y eso no está enterrado dentro de un mensaje en una larga cadena en algún grupo de noticias de apache)?
Mi impresión actual es:
La codificación de transferencia sería, de hecho, la manera correcta de hacer lo que se hace principalmente con la codificación de contenido mediante el servidor existente y las implementaciones de clientes.La codificación de contenido, debido a sus implicaciones semánticas, conlleva un par de problemas (qué debe hacer el servidor al servidor).ETag
cuando comprime de forma transparente una respuesta?)La razón es chicken'n'egg: los navegadores no lo admiten porque los servidores no lo hacen porque los navegadores no lo admitenAsí que estoy asumiendo que el camino correcto sería unTransfer-Encoding: gzip
(O, si además partí el cuerpo,se convertiría Transfer-Encoding: gzip, chunked
). Y no hay razón para tocar.Vary
oETag
o cualquier otro encabezado en ese caso, ya que es una cosa de nivel de transporte.
Por ahora no me importa demasiado el "salto por salto" deTransfer-Encoding
, algo que a los demás parece preocuparles ante todo, ya que los proxies pueden descomprimir y enviar al cliente sin comprimir. Sin embargo, los proxies podrían reenviarlos tal como están (comprimidos), si la solicitud original tiene el valor correcto.Accept-Encoding
encabezado, que en el caso de todos los navegadores que conozco es un hecho.
Por cierto, este problema tiene al menos una década, ver, por ejemplo,https://bugzilla.mozilla.org/show_bug.cgi?id=68517 .
Cualquier aclaración sobre esto será apreciada. Tanto en términos de lo que se considera que cumple con las normas y lo que se considera práctico. Por ejemplo, las bibliotecas de cliente HTTP que solo admiten la "codificación de contenido" transparente serían un argumento en contra de la practicidad.