Каково текущее положение дел, когда речь заходит о том, следует ли
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, поддерживающие только прозрачное «кодирование содержимого -», были бы аргументом против практичности.