首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >可以使用GZIP压缩HTTP请求吗?

可以使用GZIP压缩HTTP请求吗?
EN

Stack Overflow用户
提问于 2009-09-20 02:47:23
回答 4查看 17.3K关注 0票数 16

我正在使用移动设备上的Java ME应用程序与Tomcat Server通信。

我想知道我是否可以使用Gzip压缩我的请求/响应,以减少通过网络发送的字节数。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-09-20 03:16:40

现代手机的CPU处理能力很强,而网络速度又相对较慢,因此压缩非常有意义。这也很容易做到。

在J2ME端,您可以执行如下操作(假设您使用HttpConnection),

  hc.setRequestProperty("Accept-Encoding", "gzip, deflate");
  if (hc.getResponseCode() == HttpConnection.HTTP_OK) {
      InputStream in = hc.openInputStream();
      if ("gzip".equals(hc.getEncoding())) 
         in = new GZIPInputStream(in);
  ...

我们使用tinyline的GZIPInputStream,但我相信还有其他的。

http://www.tinyline.com/utils/index.html

在服务器端,这一切都是内置的。只需将以下属性添加到Tomcat上的server.xml中的连接器,

<Connector 
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,application/json"
... />
票数 18
EN

Stack Overflow用户

发布于 2009-09-20 02:55:15

您可以压缩HTTP请求或响应的内容,但不能压缩头部。请参阅HTTP1.1规范的3.6节,以及描述Content-Encoding头的后面一节。

编辑:另一方面,不能保证HTTP服务器端将接受任何特定的压缩格式。根据HTTP的服务器端实现的质量,它甚至可能无法识别请求内容是否已被压缩。因此,除非您知道服务器端支持压缩的请求内容,否则您不想这样做。

票数 4
EN

Stack Overflow用户

发布于 2009-09-20 02:54:31

由于您使用的是Tomcat,请考虑将Apache HTTP server实例放在Tomcat服务器前面的可能性。

这可以使用Apache HTTP Server的mod_jk模块来完成。完成此操作后,就可以在Apache中使用mod_gzip/mod_deflate了。

当然,您的客户端应该能够处理压缩的响应,这样才能正常工作。如果您强制您的客户端使用压缩响应,客户端将最终显示胡言乱语,因为它(通常)应该是纯文本响应。您将在客户端的Accept-Encoding标头中找到客户端处理压缩响应能力的明确指示器。

如果您希望避免在网络中引入Apache HTTP Server,则可以使用servlet或写入ZipOutputStream或GZipOutputStream的servlet过滤器以编程方式完成此操作。你会在how to do this at the OReilly OnJava.com site上找到一些提示。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1450151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档