Post-Gzip contentLength in Tomcat Custom Valve

时间:2010-03-30 20:15:22

标签: java tomcat

在自定义Tomcat Valve中有什么方法可以在内容被压缩后获取内容长度? response.getContent CountLong()返回pre-gzip大小。

1 个答案:

答案 0 :(得分:0)

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