Save-Data 头

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

HTTP Save-Data 请求头是一种网络客户端提示,它表示客户端对减少数据使用的偏好。这可能是由于高传输成本、慢连接速度等原因。

Save-Data 是一种低熵提示,因此即使服务器未使用 Accept-CH 响应头请求,客户端也可能发送它。此外,它应该用于减少发送到客户端的数据,而不考虑指示网络能力的其他客户端提示的值,例如 DownlinkRTT

On 表示用户在客户端明确选择加入减少数据使用模式。当传达给源时,这允许它们提供替代内容以减少下载的数据,例如更小的图像和视频资源、不同的标记和样式、禁用轮询和自动更新等。

注意:禁用 HTTP/2 服务器推送 (RFC 7540,第 8.2 节:服务器推送) 可能会减少数据下载。请注意,此功能在大多数主要浏览器引擎中不再默认支持。

头类型 请求标头客户端提示
禁止请求头
CORS-safelisted 响应头

语法

http
Save-Data: <sd-token>

指令

<sd-token>

一个值,表示客户端是否希望选择加入减少数据使用模式。on 表示是,而 off(默认值)表示否。

示例

使用 Save-Data: on

以下消息请求一个资源,其中 Save-Data 头指示客户端正在选择进入减少数据模式

http
GET /image.jpg HTTP/1.1
Host: example.com
Save-Data: on

服务器响应 200 响应,并且 Vary 头指示 Save-Data 可能已用于创建响应,并且缓存应该知道此头以区分响应

http
HTTP/1.1 200 OK
Content-Length: 102832
Vary: Accept-Encoding, Save-Data
Cache-Control: public, max-age=31536000
Content-Type: image/jpeg

[…]

省略 Save-Data

在这种情况下,客户端在没有 Save-Data 头的情况下请求相同的资源

http
GET /image.jpg HTTP/1.1
Host: example.com

服务器的响应提供了内容的完整版本。Vary 头确保响应应根据 Save-Data 头的值单独缓存。这可以确保当 Save-Data 头不再存在时(例如,从蜂窝网络切换到 Wi-Fi 后),用户不会从缓存中获得质量较低的图像。

http
HTTP/1.1 200 OK
Content-Length: 481770
Vary: Accept-Encoding, Save-Data
Cache-Control: public, max-age=31536000
Content-Type: image/jpeg

[…]

规范

规范
保存数据 API
# save-data-request-header-field

浏览器兼容性

另见