我在用
Spark
提供不同种类的内容。”“内容长度”的计算是正确的,但我在使用时面临一个问题:
response.header("Content-Encoding", "gzip")
their documentation
,spark将在设置头时自动将内容gzip。。。它做到了。
但是,我之前计算的“内容长度”不再有效,因此在浏览器中出现“net::ERR_Content_Length_MISMATCH”错误。
如何知道火花压缩输出后的结果大小?
更多细节:
我在Spark上创建了一个库,它自动设置这样的头,有趣的部分看起来像(简化的):
if(request.headers("Accept-Encoding")?.contains("gzip")) {
response.header("Content-Encoding", "gzip")
// How to get or calculate the resulting size?
response.header("Content-Length", ???????)
}
问题是Spark没有自动设置“Content Length”头,所以我试图添加它。在那之前,计算是正确的(没有压缩),但是Spark将压缩输出(因为它检测到“gzip”作为编码),所以我没有一个可靠的方法来正确设置它。
我能想到的解决这个问题的方法是:
-
Spark adds that header automatically
(或是我自己的分支)。
-
-
用Spark做的方法压缩它,这样我就可以计算出大小(但是很难看,因为它会压缩输出两次=CPU浪费)。
我目前的解决方案是不设置
Content-Length
使用时标题
gzip
我希望这些细节能使情况更加明朗。