Кодировка передачи: gzip или Кодировка содержимого: gzip

Каково текущее положение дел, когда дело доходит до того, чтобы сделать

Transfer-Encoding: gzip

или

Content-Encoding: gzip

когда я хочу разрешитьclients например, с ограниченная пропускная способностьsignal their willingness to accept a compressed response иserver have the final say whether or not to compress.

Последний, например, то, что Apache mod_deflate и IIS делают, если вы позволите ему позаботиться о сжатии. В зависимости от размера содержимого, которое будет сжато, будет выполнено дополнительноеTransfer-Encoding: chunked.

Это также будет включать в себяVary: Accept-Encoding, который уже намекает на проблему.Content-Encoding кажется частью сущности, поэтому изменениеContent-Encoding равносильно изменению субъекта, то есть другомуAccept-Encoding заголовок означает, например, кеш не может использовать свою кешированную версию идентичной сущности.

Есть ли определенный ответ на этот вопрос, который я пропустил (и который не скрыт внутри сообщения в длинной ветке в какой-то группе новостей apache)?

Мое нынешнее впечатление:

Transfer-Encoding would in fact be the right way to do what is mostly done with Content-Encoding by existing server and client implentations Content-Encoding, because of its semantic implications, carries a couple of issues (what should the server do to the ETag when it transparently compresses a response?) The reason is chicken'n'egg: Browsers don't support it because servers don't because browsers don't

Таким образом, я предполагаю, что правильный путь будетTransfer-Encoding: gzip (или, если я дополнительно порчу тело, этостанет Transfer-Encoding: gzip, chunked). И нет причин для прикосновенияVary или жеETag или любой другой заголовок в этом случае, поскольку он является элементом транспортного уровня.

На данный момент я не слишком беспокоюсь о «хоп-хоп-хе»Transfer-Encodingчто-то, о чем другие, кажется, беспокоятся в первую очередь, потому что прокси-серверы могут распаковывать и пересылать несжатый клиенту. Однако прокси-серверы могут с такой же скоростью пересылать его как есть (сжатый), если исходный запрос имеетAccept-Encoding заголовок, который в случае всех браузеров, которые я знаю, является данным.

Кстати, этой проблеме, по крайней мере, десятилетие, см., Например, https://bugzilla.mozilla.org/show_bug.cgi?id=68517 .

Любые разъяснения по этому поводу будут оценены. И с точки зрения того, что считается соответствующим стандартам, и того, что считается практичным. Например, клиентские библиотеки HTTP поддерживают только прозрачное & quot; Content-Encoding & quot; будет аргумент против практичности.

Ответы на вопрос(2)

Ваш ответ на вопрос