Transfer-Encoding: gzip vs. Content-Encoding: gzip

Qual é o estado atual das coisas quando se trata de fazer

Transfer-Encoding: gzip

ou um

Content-Encoding: gzip

quando eu quero permitirclientes com por ex. largura de banda limitadasinalizar sua vontade de aceitar uma resposta comprimida e aservidor tem a palavra final se deve ou não comprimir.

O último é o que e. O mod_deflate e o IIS do Apache fazem isso, se você permitir que ele cuide da compactação. Dependendo do tamanho do conteúdo a ser compactado, ele fará o adicionalTransfer-Encoding: chunked.

Incluirá também umVary: Accept-Encoding, que já sugere o problema.Content-Encoding parece ser parte da entidade, mudando assim aContent-Encoding equivale a uma mudança da entidade, ou seja, umAccept-Encoding cabeçalho significa, e. um cache não pode usar sua versão em cache da entidade idêntica.

Existe uma resposta definitiva sobre isso que eu perdi (e isso não está enterrado dentro de uma mensagem em um longo tópico em algum grupo de notícias do Apache)?

Minha impressão atual é:

A codificação de transferência seria, na verdade, a maneira correta de fazer o que é feito principalmente com o Content-Encoding por meio de implantações de servidor e cliente existentesO Content-Encoding, por causa de suas implicações semânticas, carrega alguns problemas (o que o servidor deve fazer aoETag quando transparentemente comprime uma resposta?)A razão é o chicken'n'egg: os navegadores não suportam isso porque os servidores não o fazem porque os navegadores não

Então eu estou supondo que o caminho certo seria umTransfer-Encoding: gzip (ou, se eu, adicionalmente, naco o corpo,se tornaria Transfer-Encoding: gzip, chunked). E não há razão para tocarVary ouETag ou qualquer outro cabeçalho nesse caso, pois é uma coisa do nível de transporte.

Por enquanto eu não me importo muito com o 'hop-by-hop'-ness deTransfer-Encoding, algo que os outros parecem estar preocupados em primeiro lugar, porque os proxies podem descompactar e encaminhar descomprimidos para o cliente. No entanto, os proxies podem também enviá-los como estão (compactados), se o pedido original tiver oAccept-Encoding cabeçalho, que no caso de todos os navegadores que eu conheço é um dado.

Btw, esta questão tem pelo menos uma década, ver por exemplohttps://bugzilla.mozilla.org/show_bug.cgi?id=68517 .

Qualquer esclarecimento sobre isso será apreciado. Tanto em termos do que é considerado compatível com os padrões quanto do que é considerado prático. Por exemplo, as bibliotecas cliente HTTP que suportam apenas "Content-Encoding" transparente seriam um argumento contra a praticidade.

questionAnswers(2)

yourAnswerToTheQuestion