gpt4 book ai didi

java - Play 框架中的 Gzip 分块响应

转载 作者:行者123 更新时间:2023-12-02 02:36:19 28 4
gpt4 key购买 nike

有人知道如何在 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");
}
});

最佳答案

据我了解,您必须先对响应进行 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: _*)

关于java - Play 框架中的 Gzip 分块响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20318835/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com