HTTP: Что является предпочтительным Accept-Encoding для "gzip, deflate"? - PullRequest
7 голосов
/ 12 июля 2010

Этот вопрос касается порядка приоритета для типов мультимедиа заголовка HTTP «Accept-Encoding», когда все имеют равный вес и был вызван этим комментарием в моем блоге.

Справка:

Заголовок Accept-Encoding принимает разделенный запятыми список media-types , который может принять браузер, например. GZIP, выкачать

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

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

Вопрос:

Какой тип носителя имеет приоритет в следующем случае?

Accept-Encoding: gzip,deflate

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

Ответы [ 2 ]

5 голосов
/ 20 июля 2010

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

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

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

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

0 голосов
/ 12 июля 2010

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

...