Почему браузер не может отправить gzip запрос?

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

Более старое, но хорошее сообщение в блоге о легкости можно найти здесь: http://stephendnicholas.com/archives/1217

Если вы заинтересованы в подробностях протокола, ознакомьтесь с этой обширной серией сообщений в блоге: http://www.hivemq.com/mqtt-essentials-wrap-up/

68
задан Herman 8 January 2009 в 16:28
поделиться

5 ответов

Клиент и сервер должен договориться, как связаться; часть этого - может ли коммуникация быть сжата. HTTP был разработан как модель запроса/ответа, и исходное создание почти наверняка предполагалось, чтобы всегда иметь маленькие запросы и потенциально большие ответы. Сжатие не , потребовал реализовывать HTTP, существует и серверы и клиенты, которые не поддерживают его.

сжатие HTTP реализовано клиентом, говорящим это, может поддерживать сжатие, и если сервер видит это в запросе, и это поддерживает сжатие, это может сжать ответ. Для сжатия запроса, у клиента должен был бы быть "предварительный запрос", который на самом деле согласовал это, запрос будет выполнен сжатый, ИЛИ это должно было бы потребовать сжатия как поддерживаемого кодирования для ВСЕХ запросов.

* ОБНОВЛЯЮТ февраль, '17 * Это были 8 лет, но как @Phil_1984_ примечания, 3-е возможное решение было бы для клиента и сервера, чтобы согласовать поддержку сжатия и затем использовать это для последующих запросов. На самом деле вещи как HSTS работают просто этот путь с клиентом, кэширующимся, что сервер ожидает только говорить TLS и игнорировать любые незашифрованные ссылки. HTTP был явно разработан, чтобы быть не сохраняющим состояние, но мы переместились кроме того в эту точку.

61
ответ дан Peter Oehlert 7 November 2019 в 10:21
поделиться

Клиент не может знать заранее, что сервер понял бы запрос gzipped, но сервер может знать, что клиент примет тот.

27
ответ дан Paul Dixon 7 November 2019 в 10:21
поделиться

Поскольку это не знает, что сервер может принять его. Транзакции HTTP отправил единственный запрос клиент, сопровождаемый ответом. Одна из вещей, которые отправляет клиент, - то, какое кодирование/сжатие она может поддерживать. Сервер может тогда решить, как сжать ответ. У клиента нет этой роскоши.

3
ответ дан Yuliy 7 November 2019 в 10:21
поделиться

Возможно, при условии, что он может гарантировать, что сервер его примет. Это может означать использование запроса OPTIONS.

Есть много вещей, которые веб-браузеры могут делать (например, конвейерная обработка), которые они не делают. Разработчики веб-браузера учитывают последствия изменения совместимости.

В гетерогенной среде существует множество различных веб-серверов и конфигураций. Внесение изменений в работу клиента может нарушить некоторые из них.

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

Исторически было много сломанных реализаций клиент / сервер - в течение долгого времени,

7
ответ дан MarkR 24 November 2019 в 14:18
поделиться

Если вы пишете веб-приложение, я предполагаю, что вы контролируете, что отправляется клиенту и что отправляется обратно от клиента.

Достаточно легко написать реализацию gzip на javascript, которая сжимает почтовые данные, отправляемые на сервер. Сервер может иметь фильтр (термин j2ee), который знает, что данные клиента отправляются в сжатом виде, этот фильтр распаковывает данные и затем передает данные сервлету (или классам действий в Struts), которые считывают данные как обычно, например request.getParameter ( ...).

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

2
ответ дан 24 November 2019 в 14:18
поделиться
Другие вопросы по тегам:

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