json - Gzip 压缩但不会加速从 Spring MVC Rest API 下载 JSON 输出

标签 json spring-mvc tomcat gzip

我有一个在 tomcat 7 上运行的 Spring MVC 应用程序,它返回一个大的(4 Mb)JSON 响应到 REST API 请求。使用 Chrome 开发人员工具,我发现下载平均需要大约 2.9 秒。为了加快速度并减少数据使用,我启用了 gzip 编码,首先使用 tomcat 压缩(然后使用 apache mod_deflate)。

在这两段时间里,我看到文件大小减少到大约 250Kb。请求 header 设置了 gzip 和分块编码标志。然而,网络传输时间并没有减少(事实上,平均而言,我认为我看到了非常小的增加)。

这对你来说有意义吗?我想弄清楚为什么传输速度随着文件大小的变化而不变。如果这不是足够的信息,请让我知道哪些数据可以使这个问题更具建设性。我应该改用带有 GZipOutputStream 的自定义 servlet 吗? (我想知道为什么这是正确的方法)

最佳答案

  • 从字面上来说,传输时间是从消息的第一位到最后一位“离开”服务器的时间。
  • 另一方面,传播时间是数据包通过传输方式(空气)到达目的地所需的时间。

因此,如果数据包的大小较小,则两次都应该减少。但是,我猜 Chrome 的开发者工具从你发出请求的那一刻起就开始计算“传输时间”,因为浏览器无法知道服务器开始传输的时间。因此,您计算的传输时间包括服务器压缩文件所需的时间,因此没有明显减少。

一般来说,缩小(压缩)或不压缩网络服务器的响应是一种权衡,需要仔细研究。特定元素在缩小时提供大量时间 yield (例如 css 文件),而对于其他元素,浪费的 CPU 时间超过了时间 yield (例如 JPG 或 PDF)。

关于json - Gzip 压缩但不会加速从 Spring MVC Rest API 下载 JSON 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31012872/

相关文章:

java - 使用 Spring Security ACL

tomcat - 使用 Jsf 2 和 CDI 的数据列表模式

tomcat - 在 servlet 应用程序中保存上传文件的推荐方法

apache - 如何阻止对 tomcat 和 solr 接口(interface)的公共(public)访问

java - 存储在 SharedPreferences 中的字符串在每次应用程序关闭时都会被修改吗?

java - 如何在Java数据模型类中拥有动态数据类型变量?

php - 我想要解析、编辑并合并到一个对象中的多个 JSON 文件,

php - JSON 中的嵌套数组响应仅返回 Mysql 表中的最后一行

java - 无法配置 Spring MVC 应用程序

java - 使用 spring 和 tomcat 静态编织 eclipselink jpa