usar compresion como chequear http gzip chunked-encoding

http - compresion - ¿Compresión gzip de la respuesta de codificación fragmentada?



como usar gzip (3)

En caso de que las otras respuestas no fueran lo suficientemente claras:

Primero, gzip el cuerpo con zlib (esto se puede hacer en una secuencia para que no necesites todo el contenido de la memoria a la vez, que es el punto central de la fragmentación).

Luego envía ese cuerpo comprimido en fragmentos (probablemente los proporcionados por el flujo de gzip, con el encabezado de fragmento para declarar cuánto tiempo es), con la codificación de contenido: gzip y la codificación de transferencia: encabezados fragmentados (y sin longitud de contenido) encabezamiento).

Si está utilizando gzip o zcat o alguna utilidad similar para la compresión, es probable que no funcione. Necesita ser zlib. Si está creando los fragmentos y luego los comprime, definitivamente no funcionará. Si cree que está haciendo esto correctamente y no está funcionando, puede intentar tomar un seguimiento de paquetes y hacer preguntas basadas en eso y en cualquier mensaje de error que esté recibiendo.

Estoy tratando de hacer que mi servidor web gzip correctamente una respuesta http que es codificación de trozos

mi comprensión de la respuesta no gzip es que se ve así:

<the response headers>

y luego por cada trozo,

<chunk length in hex>/r/n<chunk>/r/n

y finalmente, un trozo de longitud cero:

0/r/n/r/n

He intentado hacer funcionar la compresión gzip y podría necesitar ayuda para averiguar qué se debe devolver. Esta documentación implica que toda la respuesta debe estar comprimida en formato Gzip, en lugar de gzipping cada fragmento:

HTTP servers sometimes use compression (gzip) or deflate methods to optimize transmission. Chunked transfer encoding can be used to delimit parts of the compressed object. In this case the chunks are not individually compressed. Instead, the complete payload is compressed and the output of the compression process is chunk encoded.

Intenté gzip todo y devolví la respuesta incluso sin fragmentar, y no funcionó. Intenté establecer el encabezado de codificación de contenido en "gzip". ¿Alguien puede explicar qué cambios deben realizarse en el esquema anterior para admitir el procesamiento de fragmentos? Gracias.


Es probable que no estés enviando una respuesta comprimida correctamente.

Intente establecer los window bits la window bits a 31 en zlib. Y usa deflateInit2() .


Gzip el contenido, y solo entonces aplica la codificación fragmentada:

"Dado que" fragmentado "es la única codificación de transferencia que deben entender los destinatarios de HTTP / 1.1, desempeña un papel crucial en la delimitación de mensajes en una conexión persistente. Cada vez que se aplica una codificación de transferencia a un cuerpo de carga útil en una solicitud, La codificación de transferencia final aplicada DEBE estar "fragmentada". Si se aplica una codificación de transferencia a un cuerpo de carga útil de respuesta, entonces la codificación de transferencia final DEBE estar "fragmentada" o el mensaje DEBE terminarse cerrando la conexión. se utiliza la codificación de transferencia "fragmentada", DEBE ser la última codificación de transferencia aplicada para formar el cuerpo del mensaje. La codificación de transferencia "fragmentada" NO DEBE aplicarse más de una vez en el cuerpo del mensaje ".

( HTTPbis Part1, Sección 6.2.1 )