开发实战指南

Content-Type 与 Content-Encoding:JSON 也可以压缩

分别描述媒体格式与传输压缩,避免浏览器客户端重复解压。

Nav Tools ·

让两个头各司其职

Content-Type 描述表示的媒体类型,Content-Encoding 描述施加的内容编码。

Gzip 压缩的 JSON 解码后仍是 application/json,不应因此自动改为 application/gzip。

Content-Type: application/json
Content-Encoding: gzip
Decoded body: {"ok":true}

区分独立压缩文件下载

下载独立 Gzip 文件时,容器本身是产物,可以使用 application/gzip。

这不同于为传输压缩 JSON,需明确传输解码后用户或客户端应收到什么。

避免二次解压

浏览器 fetch 通常在 HTTP 内容解码后提供正文,仍可见的头不代表暴露文本还压缩着。

再送入 Gzip 解码器前应确认客户端约定,本站 Gzip 工具要求 Base64 包装的压缩字节。

正确区分协商后的响应

服务端按 Accept-Encoding 选择编码时,缓存需正确区分变体,通常使用 Vary。

只有保留原始传输的客户端模式才能检查压缩字节,解码文本长度不一定等于传输 Content-Length。

参考资料

← 开发实战指南