Java play框架中的Gzip分块响应
有人知道如何在play framework 2.2.1上压缩分块响应吗?我有gzipFilter,它可以完美地压缩常规内容,但不会压缩分块响应。我的代码非常简单,如下所示: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
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: _*)