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

Json 如何在REST服务中启用压缩选项,json,web-services,rest,resteasy,Json,Web Services,Rest,Resteasy,我正在使用RESTEasy框架开发REST服务。我的数据非常庞大,其格式为application/json 我试图通过@GZIP注释我的服务方法来启用压缩 但我发现客户端的时差并没有差别。无论是否有@GZIP注释,响应时间都是相同的 我正在发送一个HTTPGET请求,响应是JSON格式的对象列表 在将响应发送回客户端时,我还需要做什么来实现压缩?您不必做任何其他事情,压缩是通过@GZIP启用的。 您不必做任何其他事情,压缩是通过@GZIP启用的。 下载文件需要什么 Chrome的网络工具中的时间

我正在使用RESTEasy框架开发REST服务。我的数据非常庞大,其格式为application/json

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

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

我正在发送一个HTTPGET请求,响应是JSON格式的对象列表


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

您不必做任何其他事情,压缩是通过@GZIP启用的。
您不必做任何其他事情,压缩是通过@GZIP启用的。 下载文件需要什么

Chrome的网络工具中的时间不仅仅包括下载文件——如果将鼠标移到网络选项卡的时间轴列中的块上,您将看到如下图所示的内容。这表明,在花费的1.32秒中,只有大约70毫秒是内容下载:

神圣的烟雾1.05秒用于DNS查找?!一定是我的VPN。请注意,TTFB到第一个字节的时间是服务器开始响应所用的时间

你应该节省多少时间

另一件需要记住的事情是,你不会用GZIP节省那么多时间的,我只是失去了为谷歌工作的机会!。在目前速度相当慢的5Mbps连接中,200KB到100KB之间的下载时间远远少于1秒

200 kb是1600000位或1.6兆位,因此在5兆位连接上,您需要下载1.6/5=0.32或320毫秒。如果启用GZIP并将文件大小降低到120KB,则需要下载0.96MB或192ms,节省了128ms,这是值得尊敬的,但可能不是您所想的数量级

以上图为例,我们发现计算出的时间与“现实世界”中的时间并不完全相同,因为在交换文件时会发生其他事情,如服务器带宽、网络异常等。上图中的文件为32.9 kb,0.2632 MB,需要52.64毫秒,但实际需要70.437毫秒,但很接近。请随意更正我的数学,我确信某处有错误

服务器时间呢

最后,您可能需要查看生成文件所需的时间-如果您的服务器生成文件需要5秒,传输速度为5 mbps的连接需要800毫秒,使用GZIP,您可能无法尽可能多地提高性能,最多可能400毫秒,因此您的总时间仍将高达5.4秒,而真正的问题是服务器生成文件所需的时间。

下载文件需要多少时间

Chrome的网络工具中的时间不仅仅包括下载文件——如果将鼠标移到网络选项卡的时间轴列中的块上,您将看到如下图所示的内容。这表明,在花费的1.32秒中,只有大约70毫秒是内容下载:

神圣的烟雾1.05秒用于DNS查找?!一定是我的VPN。请注意,TTFB到第一个字节的时间是服务器开始响应所用的时间

你应该节省多少时间

另一件需要记住的事情是,你不会用GZIP节省那么多时间的,我只是失去了为谷歌工作的机会!。在目前速度相当慢的5Mbps连接中,200KB到100KB之间的下载时间远远少于1秒

200 kb是1600000位或1.6兆位,因此在5兆位连接上,您需要下载1.6/5=0.32或320毫秒。如果启用GZIP并将文件大小降低到120KB,则需要下载0.96MB或192ms,节省了128ms,这是值得尊敬的,但可能不是您所想的数量级

以上图为例,我们发现计算出的时间与“现实世界”中的时间并不完全相同,因为在交换文件时会发生其他事情,如服务器带宽、网络异常等。上图中的文件为32.9 kb,0.2632 MB,需要52.64毫秒,但实际需要70.437毫秒,但很接近。请随意更正我的数学,我确信某处有错误

服务器时间呢


最后,您可能需要查看生成文件所需的时间-如果您的服务器生成文件需要5秒,传输速度为5 mbps的连接需要800毫秒,使用GZIP,您可能无法实现所需的最大改进速度(可能是400毫秒),因此总时间仍将很高,为5.4秒,真正的问题是服务器生成文件所用的时间。

您不会寻找时间差,而是寻找大小差。在Chrome的network tab developer tools中,您将看到一个大小列,顶部的数字是传输大小,底部的数字是未压缩的实际大小。我压缩的全部原因
数据,以便客户端可以更快地接收。我是不是遗漏了什么。这是否意味着只有压缩将减少通过网络传输的大小,但由于客户端需要取消压缩,所以总体时间将保持不变。不知怎么的,我觉得很奇怪。我认为压缩是为了使响应更快。通常它应该更快,因为你应该在接收少量数据时节省更多的时间,这样你就可以放松压缩了。但这取决于数据的种类和数量以及客户端的能力。但是你没有回答pherris的问题:传输和实际大小不同吗?@pherris是的,当我使用chrome测试我的服务时,大小和时间不同。但是当我使用jersey客户端时,时间保持不变,我仍然在想为什么我需要设置客户端头以请求压缩响应?你不会寻找时间差,而是寻找大小差。在Chrome的network tab developer tools中,您将看到一个大小列,顶部的数字是传输大小,底部的数字是未压缩的实际大小。我压缩数据的全部原因是为了让客户端能够更快地接收数据。我是不是遗漏了什么。这是否意味着只有压缩将减少通过网络传输的大小,但由于客户端需要取消压缩,所以总体时间将保持不变。不知怎么的,我觉得很奇怪。我认为压缩是为了使响应更快。通常它应该更快,因为你应该在接收少量数据时节省更多的时间,这样你就可以放松压缩了。但这取决于数据的种类和数量以及客户端的能力。但是你没有回答pherris的问题:传输和实际大小不同吗?@pherris是的,当我使用chrome测试我的服务时,大小和时间不同。但是当我使用jersey客户端时,时间保持不变,我仍然在想为什么我需要设置客户端头以请求压缩响应?是的,我提到了这个过程,但我的问题是为什么客户端接收数据的速度不快?是的,我提到了这个过程,但我的问题是,为什么客户端不能更快地接收数据?谢谢@pherris,我将客户端的编码改为gzip.deflate,我可以看到一些改进。但正如你所指出的,它没有我预期的那么多。使用Gzip压缩和解压缩的时间消耗了大部分时间。如果我使用其他压缩方法,我能做得更好吗?我需要做些什么?我还应该尝试哪个选项?您的文件压缩/未压缩有多大?你什么时候到你想看什么?您使用的是什么类型的连接?如果没有很好的理由,我会犹豫去GZIP之外的其他路线。谢谢@pherris,我改变了我的客户发送编码为GZIP.deflate,我可以看到一些改进。但正如你所指出的,它没有我预期的那么多。使用Gzip压缩和解压缩的时间消耗了大部分时间。如果我使用其他压缩方法,我能做得更好吗?我需要做些什么?我还应该尝试哪个选项?您的文件压缩/未压缩有多大?你什么时候到你想看什么?您使用的是什么类型的连接?如果没有很好的理由,我会犹豫去GZIP以外的其他路线。