代码之家  ›  专栏  ›  技术社区  ›  James Ward

Tomcat自定义阀中的post gzip contentlength

  •  1
  • James Ward  · 技术社区  · 15 年前

    在定制的Tomcat阀中,在内容被gzipped之后,有没有任何方法可以获得ContentLength?response.getContentCountLong()返回预先gzipped的大小。

    1 回复  |  直到 15 年前
        1
  •  0
  •   BalusC    15 年前

    使用gzip,压缩内容的总长度是不可预知的。只有在最后一位被压缩时才知道。在Tomcat中,gzip响应通常以块的形式直接发送(使用 Transfer-Encoding: chunked )永远不要预先在内存中完全缓冲,因为这可能会占用内存。因此,除了自己计算写入输出流的字节数,或者手动缓冲响应的整个输出流,并在关闭时手动发送/刷新响应(这可能会占用内存),我看不到提前获取内容长度的方法。