开发实战指南
Content-Type 与 Content-Encoding:JSON 也可以压缩
分别描述媒体格式与传输压缩,避免浏览器客户端重复解压。
让两个头各司其职
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。