文档

§配置 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 配置压缩级别。值必须介于 -19(含)之间,并且遵循由 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);

下一步:配置安全标头


在本文档中发现错误?此页面的源代码可以在 此处 找到。在阅读 文档指南 后,请随时贡献拉取请求。有疑问或建议要分享?转到 我们的社区论坛,与社区开始对话。