我试图用[]的数据压缩一个小的HTTP响应。
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Vary: Accept-Encoding
Date: Thu, 30 Mar 2023 15:50:03 GMT
Connection: close
Transfer-Encoding: chunked
2
[]
0
然而,在将压缩的Brotli发送到浏览器后,它只是挂起,好像它仍在解析数据。我想知道Brotli压缩小数据是否有问题?它适用于更大的数据量。
下面是我在NodeJS中编写的压缩数据体的代码:
import zlib from 'node:zlib';
const compressedBody = await new Promise<Buffer>((resolve, reject) => {
zlib.brotliCompress(body, (err, data) => {
if (err) {
process.stderr.write('Error occured while brotli compressing');
reject(err);
} else {
resolve(data);
}
});
});
1条答案
按热度按时间r3i60tvu1#
在HTTP/1.1中,压缩(请求和)响应意味着只压缩有效负载。头部不压缩,也不压缩分块的编码长度。如果你压缩整个响应(就像你所做的那样),浏览器无法理解它。
带有Brotli压缩的
[]
有效负载的分块HTTP/1.1响应看起来是这样的:注意,“压缩的”有效载荷是6字节长,而未压缩的有效载荷仅是2字节。