【问题标题】:Gzip chunked response in play framework播放框架中的 Gzip 分块响应
【发布时间】:2016-11-30 20:57:32
【问题描述】:

有人知道如何在播放框架 2.2.1 上压缩分块响应吗?我有 gzipFilter 可以完美压缩常规内容,但不压缩分块响应。我的代码非常简单,如下所示:

return ok(new StringChunks() {
    public void onReady(Chunks.Out<String> out) {
        out.write("Huuuge content to be gzipped");
        out.write("Huuuge content2 to be gzipped");
    }
});

【问题讨论】:

    标签: java playframework-2.0


    【解决方案1】:

    据我了解,您必须先对响应进行 Gzip 压缩,然后再对其进行分块。如果播放块它,你不能要求 Apache 之后 gzip,也不能播放过滤器。

    我得到了一些使用以下代码的东西。它是 scala,但您可以理解 :)(播放 2.2 Scala)

      import scala.concurrent.ExecutionContext.Implicits.global
      val enumerator = Enumerator.outputStream { outputStream =>
        val finalOutputStream = {
          if ( canGzip ) new GZIPOutputStream(outputStream)
          else outputStream
        }
        CustomSerializer.serialize(call,finalOutputStream)
      }
    
      val headers = List(
        Some("Content-Type","application/json"),
        if (canGzip) Some(("Content-Encoding","gzip")) else None
      ).flatten
    
      Ok.chunked(enumerator).withHeaders(headers: _*)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多