Save-Data 头
HTTP Save-Data
请求头是一种网络客户端提示,它表示客户端对减少数据使用的偏好。这可能是由于高传输成本、慢连接速度等原因。
Save-Data
是一种低熵提示,因此即使服务器未使用 Accept-CH
响应头请求,客户端也可能发送它。此外,它应该用于减少发送到客户端的数据,而不考虑指示网络能力的其他客户端提示的值,例如 Downlink
和 RTT
。
值 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 |
浏览器兼容性
加载中…
另见
- CSS
@media
特性prefers-reduced-data
实验性 Vary
头,指示所提供的内容根据Save-Data
的值而变化(参见 HTTP 缓存:Vary)NetworkInformation.saveData
- 在 css-tricks.com 上帮助用户
Save-Data
- 在 web.dev 上使用 Save-Data 提供快速轻量级应用程序 - web.dev
- 通过用户代理客户端提示改善用户隐私和开发者体验 (developer.chrome.com)