Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java play框架中的Gzip分块响应_Java_Playframework 2.0 - Fatal编程技术网

Java play框架中的Gzip分块响应

Java play框架中的Gzip分块响应,java,playframework-2.0,Java,Playframework 2.0,有人知道如何在play framework 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

有人知道如何在play framework 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");
    }
});
返回ok(新的StringChunks(){
public void onReady(Chunks.Out){
写出(“要压缩的Huuuge内容”);
写出(“Huuuge content2待压缩”);
}
});

据我所知,在对响应进行分块之前,必须先对其进行Gzip处理。如果play将其分块,那么之后就不能要求Apache进行gzip,也不能要求play过滤器

我得到了一些使用以下代码的东西。这是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: _*)