HTTP 103 Early Hints:网页还没生成完,浏览器能先做什么?
TL;DR
HTTP 103 Early Hints 允许服务器在最终响应到来前,先提示浏览器可能需要的关键资源,让连接和下载有机会提前启动。本文讲解它与 200 响应的区别、适用场景,以及浏览器和中间代理支持不足时的现实边界。
HTTP 103 Early Hints 允许服务器在最终响应到来前,先提示浏览器可能需要的关键资源,让连接和下载有机会提前启动。本文讲解它与 200 响应的区别、适用场景,以及浏览器和中间代理支持不足时的现实边界。

打开一个网页时,浏览器通常先请求 HTML,等服务器把页面内容准备好,才知道还需要哪些样式表、字体或脚本。若后端查询很慢,浏览器只能空等,即便服务器已经知道页面大概率会用哪些关键资源。HTTP 103 Early Hints 允许服务器提前发出一条“提示响应”,让浏览器在最终页面到达前先做准备。
先递一张可能有用的清单
服务器可以先返回状态码 103,并通过 Link 等响应头提示浏览器预连接或预加载某些资源。浏览器收到后,可以尝试提前建立连接、下载样式或字体;之后服务器仍会发送真正的最终响应,例如 200 和 HTML 内容。103 是信息性提示,不是页面正文,也不会取代最终结果。
这像餐厅在主菜出炉前先把餐具和饮料送上桌。若服务端生成 HTML 需要查询数据库,它可以提前告诉浏览器“这张页面很可能需要这些静态资源”,让等待时间与资源传输重叠。理想情况下,页面关键资源更早准备好,渲染不必等到 HTML 全部到达后才开始。
提示错了,也可能浪费资源
Early Hints 是提示而非命令,客户端是否采纳取决于浏览器、网络中间件和缓存路径的支持情况。若提前加载的资源最终没有用到,带宽和连接就被浪费;提示过多还可能与真正关键资源争抢带宽。跨源字体、缓存策略和安全属性也需要按照正常资源加载规则处理。
部署效果取决于服务器能否在最终页面之前准确推断关键资源。如果页面高度个性化、资源随用户状态改变,预先提示就更难;若后端很快返回页面,节省的时间也有限。RFC 8297 将 103 定义为实验性状态码,生态支持与部署方式应以目标环境测试为准。
因此,103 Early Hints 不是让服务器“提前生成整页”,而是在最终响应还没准备好时,先提供对浏览器有用的资源线索。它最适合服务器已经知道稳定关键资源、又存在明显后端等待的场景。先测提示命中率和浪费率,再决定是否部署,比单纯看到“更早加载”就开启更稳妥。



