§配置 gzip 编码
Play 提供了一个 gzip 过滤器,可用于对响应进行 gzip 压缩。
§启用 gzip 过滤器
要启用 gzip 过滤器,请将过滤器添加到 application.conf
中
play.filters.enabled += "play.filters.gzip.GzipFilter"
§配置 gzip 过滤器
gzip 过滤器支持少量调整配置选项,这些选项可以从 application.conf
中配置。要查看可用的配置选项,请参阅 Play 过滤器 reference.conf
。
§压缩级别
您可以使用 play.filters.gzip.compressionLevel
配置压缩级别。值必须介于 -1
和 9
(含)之间,并且遵循由 java.util.zip.Deflater
定义的语义。例如,默认配置为 -1
,这是 默认压缩级别,而 9
是 最佳压缩。例如
play.filters.gzip.compressionLevel = 9
§控制哪些响应被 gzip 压缩
您可以通过 application.conf
控制哪些响应被 gzip 压缩,哪些响应不被 gzip 压缩,具体取决于它们的内容类型。
play.filters.gzip {
contentType {
# If non empty, then a response will only be compressed if its content type is in this list.
whiteList = [ "text/*", "application/javascript", "application/json" ]
# The black list is only used if the white list is empty.
# Compress all responses except the ones whose content type is in this list.
blackList = []
}
}
作为更灵活的替代方案,您可以使用 gzip 过滤器本身的 shouldGzip
参数,该参数接受一个请求标头和一个响应标头的函数,并返回一个布尔值。
例如,以下代码仅对 HTML 响应进行 gzip 压缩
- Scala
-
new GzipFilter( shouldGzip = (request: RequestHeader, response: Result) => response.body.contentType.exists(_.startsWith("text/html")) )
- Java
-
GzipFilterConfig gzipFilterConfig = new GzipFilterConfig(); GzipFilter gzipFilter = new GzipFilter( gzipFilterConfig.withShouldGzip( (BiFunction<Http.RequestHeader, Result, Object>) (req, res) -> res.body().contentType().orElse("").startsWith("text/html")), materializer);
下一步:配置安全标头
在本文档中发现错误?此页面的源代码可以在 此处 找到。在阅读 文档指南 后,请随时贡献拉取请求。有疑问或建议要分享?转到 我们的社区论坛,与社区开始对话。