§配置 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);
下一步:配置安全标头
在本文档中发现错误?此页面的源代码可以在 此处 找到。在阅读 文档指南 后,请随时贡献拉取请求。有疑问或建议要分享?转到 我们的社区论坛,与社区开始对话。