当浏览器请求页面时,源站服务器需要时间准备完整响应。Early Hints 利用这段等待时间向浏览器发送包含 Link 标头的初步 103 响应,告诉浏览器需要哪些资源。浏览器可以在完整响应到达之前开始加载这些资源,从而加速页面加载。
Early Hints 在 RFC 8297 ↗ 中定义为新的 HTTP 状态码(103 Early Hints)。Cloudflare 缓存并提供来自 HTML 页面的这些带有 Link 标头的 103 响应,减少用户感知的延迟。
有关 Early Hints 的更多信息,请参阅 Cloudflare ↗ 和 Google Chrome ↗ 博客。
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
Availability | Yes | Yes | Yes | Yes |
-
在 Cloudflare 仪表板中,前往 Speed(速度) > Settings(设置) 页面。
Go to Settings ↗ -
前往 Content Optimization(内容优化) 选项卡。
-
对于 Early Hints,将开关切换为 On(开启)。
Early Hints 仅在以下情况下生成和缓存:
- 对于具有
.html、.htm或.php文件扩展名或无文件扩展名的 URI - 在 200、301 或 302 响应返回码上
- 当响应包含带有 preconnect 或 preload rel 类型的 link 标头 ↗ 时,例如
Link: </img/preloaded.png>; rel=preload
Cloudflare 将在主响应之前异步查找并发出缓存的 103 Early Hints 响应。
目前,只有某些浏览器版本会在收到 Early Hints 后采取行动进行 preload 或 preconnect,例如 Google Chrome M94 及更高版本。有关使用 WebPageTest 实验兼容客户端浏览器的说明,请参阅博客文章 ↗。
此外,请记住:
- Early Hints 响应可能在到达源站服务器或 Worker 之前发出。启用 Early Hints 且站点上的页面需要身份验证时,未认证的访问者可能会收到 103 响应。103 响应将包含缓存的 Link 标头,并在源站的 403 Forbidden 响应之前发送。
- 对于内容可缓存的请求,Early Hints 可能发出频率较低。如果响应已被缓存,Cloudflare CDN 更可能在异步 Early Hints 查找完成之前获取响应标头。如果主响应标头已可用,Cloudflare 不会发送 103 响应。
- Cloudflare 目前对某些 User-Agent 禁用 Early Hints,例如,与 1xx 响应不兼容的某些搜索引擎爬虫 bot。
- 启用 Early Hints 时,您可能会在 Cloudflare Logs 中看到大量
RequestSource为earlyHintsCache的504响应,这是预期且无害的。来自earlyHintsCache的请求是缓存 Early Hints 的内部子请求,它们既不是最终用户请求,也不会前往您的源站。它们的响应状态仅指示请求 URI 是否有缓存的 Early Hints(缓存 HIT 时为200,缓存 MISS 时为504)。这些请求已在其他视图(如 Cache Analytics)中过滤掉。要过滤这些请求或仅过滤网站的最终用户请求,请参阅过滤最终用户。