如何在REST服务中启用压缩选项

时间:2014-12-04 13:59:23

标签: json web-services rest resteasy

我正在使用rest-easy框架开发REST服务。我的数据很大,而且是应用程序/ json格式。

我尝试通过@GZIP注释我的服务方法来启用压缩。

但我发现客户端的时差没有差异。无论是否使用@GZIP注释,响应时间都是相同的。

我发送HTTP get请求,响应是JSON格式的对象列表。

在将响应发送回客户端时,我还需要做些什么来实现压缩吗?

2 个答案:

答案 0 :(得分:5)

下载文件的内容是什么?

Chrome浏览器网络工具的时间不仅包括下载文件 - 如果您将鼠标悬停在“网络”标签的“时间轴”列中的块上,您将看到如下图所示的内容。这表明在1.32秒内,只有大约70毫秒的内容下载:

Chrome's network tab

圣洁吸烟1.05秒进行DNS查询?!一定是我的VPN。请注意,TTFB(第一个字节的时间)是服务器开始响应的时间。

你应该节省多少时间?

要记住的另一件事是你不会用GZIP保存 很多时间(我只是因为那个声明而为Google工作而失去了我的机会!)。 200 kb和100 kb之间的下载时间不到一秒,连接速度为5 mbps(这些天来说速度相当慢)。

200 kb是1,600,000位或1.6兆位,因此在5兆位连接上,您需要查看1.6/5 = 0.32(或下载320 ms)。如果您启用GZIP并将文件大小降至120 kb,那么您需要下载0.96兆位或192 ms才能下载,节省128 ms(可观,但可能不在您想的数量级上?)。

以上面的图片为例,我们发现计算出的时间并不完全与您在“真实世界”中看到的时间相同。因为正在交换文件时还有其他事情发生(服务器带宽,网络奇怪等)。上图中的文件是32.9 kb,0.2632兆位,应该花费52.64 ms,但实际上需要70.437,但它已经接近了。随意纠正我的数学,我确信某处有错误;)

服务器时间怎么样?

最后,您可能需要查看生成文件所花费的时间 - 如果您的服务器需要5秒生成它并且在5 mbps连接上需要800毫秒来传输,您可能可以& #39; t使用GZIP尽可能多地改进(可能最多400毫秒)所以你的总时间仍然高达5.4秒,真正的问题是服务器生成文件的时间。

答案 1 :(得分:0)

您不必做任何其他事情,使用@GZIP启用压缩。 http://docs.jboss.org/resteasy/docs/2.2.1.GA/userguide/html/gzip.html