如何禁用自动 GZIP 响应
How to disable automatic GZIP for response
正如我从 Spark documentation 中了解到的那样,如果 GZIP 包含 Content-Encoding header 且值为 [=21],则会自动完成响应=]gzip.
我有以下代码:
post("/test", (req, res) -> byteArray);
如果 byteArray
已经用 GZIP 压缩了怎么办?然后 Spark 将再次压缩它,客户端将收到垃圾。
有什么方法可以在没有 Spark 的情况下使用 GZIP 进行响应 auto-compression?
Is there any way to response with GZIP without Spark auto-compression?
不幸的是没有。您可以使用底层 HttpServletResponse
.
上的编写器直接编写您的回复
post("/test", (req, res) -> {
res.raw().getWriter(); // do something with this writer
return "";
);
虽然不好看
无法选择退出 Spark 的自动 GZIP 压缩。
一个有点古怪的解决方法是将 InputStream 包装在 GZIPInputStream 中,然后 return 来自您的控制器方法:
return new GZIPInputStream(myInputStream);
巨大的警告: 这将浪费 CPU 周期在什么实际上是解压缩和重新压缩流的空操作上,但考虑到 Spark 没有选择退出它可以作为临时解决方法。
我鼓励 运行 关注此问题的任何人在 Spark 3 feature request thread 中提出功能请求。
正如我从 Spark documentation 中了解到的那样,如果 GZIP 包含 Content-Encoding header 且值为 [=21],则会自动完成响应=]gzip.
我有以下代码:
post("/test", (req, res) -> byteArray);
如果 byteArray
已经用 GZIP 压缩了怎么办?然后 Spark 将再次压缩它,客户端将收到垃圾。
有什么方法可以在没有 Spark 的情况下使用 GZIP 进行响应 auto-compression?
Is there any way to response with GZIP without Spark auto-compression?
不幸的是没有。您可以使用底层 HttpServletResponse
.
post("/test", (req, res) -> {
res.raw().getWriter(); // do something with this writer
return "";
);
虽然不好看
无法选择退出 Spark 的自动 GZIP 压缩。
一个有点古怪的解决方法是将 InputStream 包装在 GZIPInputStream 中,然后 return 来自您的控制器方法:
return new GZIPInputStream(myInputStream);
巨大的警告: 这将浪费 CPU 周期在什么实际上是解压缩和重新压缩流的空操作上,但考虑到 Spark 没有选择退出它可以作为临时解决方法。
我鼓励 运行 关注此问题的任何人在 Spark 3 feature request thread 中提出功能请求。