【发布时间】:2012-07-12 18:27:21
【问题描述】:
这是来自Answer on SO
至于 GZIP 压缩,你不应该自己做。让服务器自行处理。
修复您的代码以删除所有压缩响应的手动尝试,它最终应该基本上如下所示:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String json = createItSomehow();
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
}
下面是来自Apache Tomcat 7 configuration page 的 HTTP 连接器
压缩
连接器可能会使用 HTTP/1.1 GZIP 压缩来尝试保存 服务器带宽。参数的可接受值为“off” (禁用压缩),“on”(允许压缩,这会导致文本数据 被压缩),“力”(在所有情况下强制压缩),或 数字整数值(相当于“on”,但指定 输出压缩前的最小数据量)。如果 内容长度未知且压缩设置为“开”或更多 激进的,输出也会被压缩。如果没有指定,这个 属性设置为“关闭”。
compressionMinSize
如果压缩设置为“开”,则此属性可用于 指定压缩输出之前的最小数据量。如果 未指定,此属性默认为“2048”
这意味着当压缩设置为打开时。只有大于2084的数据才会被压缩。
在我的 Android 客户端中,我使用以下代码来查找数据是否经过 gzip 压缩
if ( entity.getContentEncoding() != null && "gzip".equalsIgnoreCase(entity.getContentEncoding().getValue())
我的问题
Server在压缩数据时是否也设置了entity.getContentEncoding().getValue()的值?
【问题讨论】:
标签: android tomcat compression gzip tomcat7