Post-Gzip contentLength in Tomcat Custom Valve
In a cu开发者_JAVA百科stom Tomcat Valve is there any way to get the contentLength after the content has been gzipped? response.getContentCountLong() returns the pre-gzipped size.
With GZIP, the total length of the compressed content is unpredictable beforehand. It's only known when the last bit has been compressed. In Tomcat, a GZIP response is usually directly sent in chunks (with Transfer-Encoding: chunked
) and never fully buffered in memory beforehand since this may be memory hogging. So I don't see ways to get the content length beforehand other than counting the bytes written to the outputstream yourself, or manually buffering the entire outputstream of the response and manually sending/flushing it fully on close (which may be memory hogging).
精彩评论