Почему GZIP-сжатие тела запроса при использовании метода POST встречается редко?

Я недавно играл со сжатием GZIP и, как я понимаю, следующее:

  1. Клиент запрашивает некоторые файлы или данные с веб-сервера. Клиент также отправляет заголовок "Accept-Encoding, gzip".
  2. Веб-сервер извлекает файлы или данные, сжимает их и отправляет обратно клиенту в сжатом виде GZIP. Веб-сервер также отправляет заголовок «Content-Encoded, gzip», чтобы указать Клиенту, что данные сжаты.
  3. Затем Клиент распаковывает данные / файлы и загружает их для пользователя.

Я понимаю, что это обычная практика, и это имеет смысл, когда вам нужно загрузить страницу, для которой требуется тонна HTML, CSS и JavaScript, которые могут быть относительно большими, и увеличивать время загрузки вашего браузера.

Однако я пытался разобраться в этом подробнее, и почему GZIP не часто сжимает тело запроса при выполнении вызова POST? Причина в том, что обычно тела запросов малы, поэтому время, необходимое для распаковки файла на веб-сервере, больше, чем время, необходимое для простой отправки запроса? Могу ли я получить какой-то документ или справку по этому поводу?

Спасибо!


person user1871869    schedule 06.10.2017    source источник


Ответы (1)


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

В REST API я бы сказал, что полезные нагрузки больших запросов были обычным явлением, но, очевидно, Spring Framework, известный своими инструментами REST, не согласен с этим - они явно говорят в их документации здесь, где вы можете настроить контейнер сервлета для выполнения сжатие ответа, без упоминания сжатия запроса. Поскольку режим работы Spring Framework заключается в предоставлении функциональности, которую, по их мнению, будет использовать множество людей, они, очевидно, не сочли целесообразным предоставлять ServletFilter реализацию, которую мы, пользователи, могли бы использовать для чтения сжатых тел запросов.

Было бы интересно просмотреть списки рассылки пользователей tomcat, struts, jackson, gson и т. Д. Для подобных обсуждений.

Если вы хотите написать свой собственный фильтр декомпрессии, попробуйте прочитать это: Как декодировать тело запроса, сжатое Gzip, в Spring MVC

В качестве альтернативы поместите контейнер сервлетов за веб-сервером, который предлагает больше функций. Люди, очевидно, нуждаются в сжатии запросов в достаточной степени, чтобы веб-серверы, такие как Apache, предлагали это - этот SO-ответ уже хорошо обобщает это: Сжатие HTTP-запросов - там вы также найдете ссылку на спецификацию HTTP.

person Adam    schedule 10.10.2017