HTTP: Что предпочтительным является Принятый закодированный для “gzip, выкачайте”?

Этот вопрос расценивает порядок очередности для типов среды HTTP-заголовка "Принятый закодированный", когда все имеют равный вес, и был запрошен этим комментарием к моему блогу.

Фон:

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

Добротность может также быть указана для предоставления предпочтения другим типам среды, например, в случае "gzip; q =. 8, выкачайте", выкачайте, предпочтен - но не относится к этому вопросу. NB: тип с "q=0" означает "не приемлемый".

RFC2616 также указывает, что "самая определенная ссылка" для определения типа среды должна быть взвешена сначала. т.е. "текст/HTML; level=1" должен использоваться по "тексту/HTML" - это не относится к вопросу также.

Вопрос:

В следующем случае, какой тип среды имеет приоритет?

Accept-Encoding: gzip,deflate

Оба типа имеют эквивалентную добротность 1, и оба типа "приемлемы" для браузера - таким образом, любой мог использоваться. Я всегда предполагал, что первый вводимый тип должен быть "предпочтен", но там, кажется, не определенный пример или предпочтение этого конкретного случая в RFC.

8
задан Dave Transom 7 August 2016 в 22:27
поделиться

2 ответа

Я полагаю, что где-то в RFC или в родственном RFC говорится, что первый предпочтительнее для всех полей этого формата.

Однако в особом случае gzip vs deflate вам, вероятно, следует использовать deflate, если это возможно из-за меньших накладных расходов (меньше верхних и нижних колонтитулов, и хотя у него все еще есть контрольная сумма adler32, у него нет crc32 наверху ). В остальном они точно такие же. Фактические данные сжимаются одинаково для обоих. Это означает, что выкачивание происходит быстрее и дает меньший результат. Оба они становятся гораздо более важными на странице с большой нагрузкой. Большинство дополнительных заголовков в gzip - это такие вещи, как права доступа к файлам в стиле unix, которые в любом случае бесполезны в этом контексте.

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

На своих сайтах я сначала проверяю deflate и использую его, если могу, затем проверяю gzip. Если я не могу использовать ни то, ни другое, я просто отправляю обычный текст. Я не знаю, какой язык вы используете, но для этого нужно около пяти строк ASP.NET.

6
ответ дан 5 December 2019 в 21:15
поделиться

Здесь нет предпочтений на стороне клиента. Просто выберите то, что вы (сторона сервера) предпочтете.

1
ответ дан 5 December 2019 в 21:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: