【发布时间】:2014-02-20 22:52:38
【问题描述】:
我正在编写一个 REST 服务,我正在发送一个大小约为 3MB 的 JSON 响应。应用程序使用 Scalatra 框架开发并在 Tomcat 服务器上运行。由于数据很大,我想在通过网络发送到浏览器客户端之前压缩内容。
为了压缩响应,我在 tomcat server.xml 文件中添加了以下代码:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
compression="on"
compressionMinSize="100"
noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,text/json,text/javascript,text/css,text/plain, application/javascript,application/xml,application/xml+xhtml,application/json"/>
但是我没有发现添加上述配置前后传输的内容有什么不同。它正在添加内容编码头 Content-Encoding:gzip。它没有解决我的实际目标。
为了测试此配置是否真的有效,我已将 JSON 文件复制到服务器并尝试访问该文件。它在客户端以小型压缩文件的形式接收。
似乎我缺少一些要添加的配置,以使 HTTP JSON 响应压缩为一个。有人可以帮我解决这个问题吗?
【问题讨论】:
-
查看此答案以获取 gzip 回复:stackoverflow.com/a/4755728/89435
-
@mavroprovato,谢谢。建议线程中的讨论帮助我解决了我的问题
标签: java json rest tomcat gzip