我最近正在玩GZIP压缩以及我理解以下内容的方式:
我知道这是常见的做法,当您需要加载需要大量HTML,CSS和JavaScript(可能相对较大)并添加到浏览器中的页面时,它会很有意义。 ; s加载时间。
但是,我试图进一步研究这个问题,为什么GZIP在进行POST调用时压缩请求体是不常见的?是因为通常请求主体很小,所以在Web服务器上解压缩文件所需的时间比简单发送请求所需的时间长吗?我可以提供某种文件或参考资料吗?
谢谢!
答案 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规范的引用。