有人知道如何在play framework 2.2.1上压缩chunked响应吗?我有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");
}
});
答案 0 :(得分:0)
据我了解,您必须在分块之前对其进行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: _*)