GZIP在发送给客户端之前压缩http响应

时间:2014-12-11 11:11:50

标签: java servlets

我使用过滤器解压缩了响应。收到的数据已从50 MB压缩到5 MB,但并没有节省大量时间。所花费的时间从12秒减少到10秒。还有什么办法可以缩短时间吗?

最初,网络上的数据传输需要9秒,现在压缩后需要6秒,而解压缩需要1秒

还能做些什么?

1 个答案:

答案 0 :(得分:0)

对于过滤器,可能的措施很少:

  • 存在不同的压缩级别,压缩越多越慢。默认或GZIPOutputStream应该足够快。
  • GZIPOutputStream包含要设置size的构造函数。
  • 然后有缓冲流,而不是按字节int read()
  • 合理性的代码审查:必须删除原始的Content-Length标头。

对于静态内容:

  • .bmp是浪费空间
  • 当图像重复时,可以优化
  • .pdf,w.r.t。字体。
  • .docx是一种zip格式,因此内部图像文件也可以进行优化

动态内容生成:

  • 固定文件可以存储(xxxxxx.yyy.gz),带有时间戳,然后是生成时间。测量真正的瓶颈后才感兴趣;可能是网络。
  • 交付代码应该很快。在一般的链流中,尽量不要写入ByteArrayOutputStream,而是立即写入BufferedOutputStream(原始输出流)。检查缓冲是否未完成两次。一些包装流检查包装的流是否为缓冲的实例。

生产环境:

  • 也许您甚至需要限制(减慢交付)以便同时提供多个请求。
  • 您可能需要在其他服务器上进行交付。
  • 从提供商处购买速度。向提供商询问,是否通信量太高,提供商放慢了速度。