This allows it to be used from Java
Allows use with a custom chunked threshold from Java
The gzip enumeratee to use.
The content length threshold, after which the filter will switch to chunking the result.
Whether the given request/result should be gzipped. This can be used, for example, to implement black/white lists for gzipping by content type.
A gzip filter.
This filter may gzip the responses for any requests that aren't HEAD requests and specify an accept encoding of gzip.
It will only gzip non chunked responses. Chunked responses are often comet responses, gzipping will interfere in that case. If you want to gzip a chunked response, you can apply the gzip enumeratee manually to the enumerator.
For non chunked responses, it won't gzip under the following conditions:
- The response code is 204 or 304 (these codes MUST NOT contain a body, and an empty gzipped response is 20 bytes long) - The response already defines a Content-Encoding header - The response content type is text/event-stream - A custom shouldGzip function is supplied and it returns false
Since gzipping changes the content length of the response, this filter may do some buffering. If a content length is sent by the action, that content length is filtered out and ignored. If the connection flag on the result is Close, the filter will not attempt to buffer, and will simply rely on the closing the response to signify the end of the response. Otherwise, it will buffer up to the configured chunkedThreshold, which defaults to 100kb. If the response fits in that buffer, the filter will send the content length, otherwise it falls back to sending a chunked response, or if the protocol is HTTP/1.0, it closes the connection at the end of the response.
You can use this filter in your project simply by including it in the Global filters, like this: