为什么在POST方法期间GZIP压缩请求主体不常见?

时间:2017-10-06 01:14:37

标签: post gzip http-compression

我最近正在玩GZIP压缩以及我理解以下内容的方式:

  1. 客户端从Web服务器请求一些文件或数据。客户端还会发送一个标题,表示" Accept-Encoding,gzip"
  2. Web服务器检索文件或数据,压缩它们,并将它们发送回客户端压缩的GZIP。 Web服务器还发送一个标题,说明" Content-Encoded,gzip"向客户注意数据已被压缩。
  3. 客户端然后解压缩数据/文件并为用户加载它们。
  4. 我知道这是常见的做法,当您需要加载需要大量HTML,CSS和JavaScript(可能相对较大)并添加到浏览器中的页面时,它会很有意义。 ; s加载时间。

    但是,我试图进一步研究这个问题,为什么GZIP在进行POST调用时压缩请求体是不常见的?是因为通常请求主体很小,所以在Web服务器上解压缩文件所需的时间比简单发送请求所需的时间长吗?我可以提供某种文件或参考资料吗?

    谢谢!

1 个答案:

答案 0 :(得分:1)

这种情况并不常见,因为在客户端 - 服务器关系中,服务器会将所有数据发送到客户端,正如您所提到的,来自客户端的数据往往很小,因此压缩很少会带来任何性能提升。

在REST API中,我会说大的请求有效负载是常见的,但显然Spring框架(以其REST工具而闻名)不同意 - 他们明确地说in their docs here你可以设置servlet容器来做响应压缩,没有提到请求压缩。由于Spring Framework的操作模式是提供他们认为很多人会使用的功能,他们显然没有觉得提供用户可以用来读取压缩的<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/llFirstScreen" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignBottom="@id/imgCarCircle" android:layout_alignTop="@id/imgCarCircle" android:layout_marginLeft="30dp" android:background="@color/colorAccent" android:orientation="vertical" android:paddingLeft="40dp"> <TextView android:id="@+id/mapCurrentLocation" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:text="text1" android:textStyle="normal"></TextView> <TextView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:text="text2" android:textStyle="normal"></TextView> </LinearLayout> <ImageView android:id="@+id/imgCarCircle" android:layout_width="60dp" android:layout_height="60dp" android:src="@mipmap/ic_launcher_round" /> </RelativeLayout> 实现是值得的。请求机构。

搜索tomcat,struts,jackson,gson等用户邮件列表进行类似的讨论会很有趣。

如果您想编写自己的减压过滤器,请尝试阅读:How to decode Gzip compressed request body in Spring MVC

或者,将servlet容器放在提供更多功能的Web服务器后面。人们显然需要足够的请求压缩,以至于Apache等Web服务器提供它 - 这个SO答案已经很好地总结了它:HTTP request compression - 您也可以在那里找到对HTTP规范的引用。