Передача -Кодирование :gzip и содержимое -Кодирование :gzip

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

Transfer-Encoding: gzip

или

Content-Encoding: gzip

когда я хочу разрешить клиентам , например. ограниченная пропускная способность, чтобы сигнализировать о своей готовности принять сжатый ответ , а последнее слово за сервером остается за сжатием .

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

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

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

Мое текущее впечатление:

  • Передача -Кодирование на самом деле было бы правильным способом делать то, что в основном делается с контентом -Кодирование с помощью существующих серверных и клиентских внедрений
  • Контент -Кодирование, из-за его семантического значения,несет пару вопросов (что сервер должен делать с ETag, когда он прозрачно сжимает ответ?)
  • Причина в курице и яйце :Браузеры не поддерживают это, потому что серверы не поддерживают, потому что браузеры не поддерживают

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

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

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

Любые разъяснения по этому поводу будут оценены. Как с точки зрения того, что считается соответствующим стандартам -, так и с точки зрения практичности. Например, клиентские библиотеки HTTP, поддерживающие только прозрачное «кодирование содержимого -», были бы аргументом против практичности.

90
задан 11 revs 20 September 2013 в 01:55
поделиться