Instance Constructors
-
new
GzipFilter()
-
new
GzipFilter(chunkedThreshold: Int)
-
new
GzipFilter(gzip: Enumeratee[Array[Byte], Array[Byte]] = ..., chunkedThreshold: Int = GzipFilter.DefaultChunkedThreshold, shouldGzip: (RequestHeader, ResponseHeader) ⇒ Boolean = ...)
Value Members
-
final
def
!=(arg0: AnyRef): Boolean
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: AnyRef): Boolean
-
final
def
==(arg0: Any): Boolean
-
-
final
def
asInstanceOf[T0]: T0
-
def
clone(): AnyRef
-
final
def
eq(arg0: AnyRef): Boolean
-
def
equals(arg0: Any): Boolean
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
Inherited from AnyRef
Inherited from Any
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: