[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fjM6iTLic6UfSJ2Z2B_PgYK_IxEAFCDMlCCVP5bbRdhc":3},{"item":4,"related":44},{"id":5,"type":6,"title":7,"slug":8,"summary":9,"body":10,"coverUrl":11,"productScreenshots":12,"productLinks":13,"authorName":14,"authorUrl":15,"authorSubject":16,"category":17,"tags":22,"sourceLabel":35,"sourceName":35,"sourceUrl":36,"status":37,"seoTitle":7,"seoDescription":9,"canonicalUrl":38,"isFeatured":39,"sno":40,"sortOrder":41,"publishedAt":42,"updatedAt":43,"createdAt":43},"95ff2595-33c3-4461-98e5-30ac23d148ac","article","HTTP 103 Early Hints：网页还没生成完，浏览器能先做什么？","http-103-early-hints-preload","HTTP 103 Early Hints 允许服务器在最终响应到来前，先提示浏览器可能需要的关键资源，让连接和下载有机会提前启动。本文讲解它与 200 响应的区别、适用场景，以及浏览器和中间代理支持不足时的现实边界。","打开一个网页时，浏览器通常先请求 HTML，等服务器把页面内容准备好，才知道还需要哪些样式表、字体或脚本。若后端查询很慢，浏览器只能空等，即便服务器已经知道页面大概率会用哪些关键资源。HTTP 103 Early Hints 允许服务器提前发出一条“提示响应”，让浏览器在最终页面到达前先做准备。\n\n## 先递一张可能有用的清单\n\n服务器可以先返回状态码 103，并通过 Link 等响应头提示浏览器预连接或预加载某些资源。浏览器收到后，可以尝试提前建立连接、下载样式或字体；之后服务器仍会发送真正的最终响应，例如 200 和 HTML 内容。103 是信息性提示，不是页面正文，也不会取代最终结果。\n\n这像餐厅在主菜出炉前先把餐具和饮料送上桌。若服务端生成 HTML 需要查询数据库，它可以提前告诉浏览器“这张页面很可能需要这些静态资源”，让等待时间与资源传输重叠。理想情况下，页面关键资源更早准备好，渲染不必等到 HTML 全部到达后才开始。\n\n## 提示错了，也可能浪费资源\n\nEarly Hints 是提示而非命令，客户端是否采纳取决于浏览器、网络中间件和缓存路径的支持情况。若提前加载的资源最终没有用到，带宽和连接就被浪费；提示过多还可能与真正关键资源争抢带宽。跨源字体、缓存策略和安全属性也需要按照正常资源加载规则处理。\n\n部署效果取决于服务器能否在最终页面之前准确推断关键资源。如果页面高度个性化、资源随用户状态改变，预先提示就更难；若后端很快返回页面，节省的时间也有限。RFC 8297 将 103 定义为实验性状态码，生态支持与部署方式应以目标环境测试为准。\n\n因此，103 Early Hints 不是让服务器“提前生成整页”，而是在最终响应还没准备好时，先提供对浏览器有用的资源线索。它最适合服务器已经知道稳定关键资源、又存在明显后端等待的场景。先测提示命中率和浪费率，再决定是否部署，比单纯看到“更早加载”就开启更稳妥。\n\n来源：[IETF RFC 8297：An HTTP Status Code for Indicating Hints](https:\u002F\u002Fwww.rfc-editor.org\u002Finfo\u002Frfc8297\u002F)","\u002Fuploads\u002F2026-10-17\u002F66635d67-b6a9-4943-ad8b-e559bc859b28.jpg",[],[],"Foundit","https:\u002F\u002Ffoundit.cn","foundit-ai-editorial",{"id":18,"name":19,"slug":20,"description":21},"6179d3b6-dc34-4483-9ded-3cd9f1b37a47","科普","abbreviation","介绍各领域新兴概念",[23,27,31],{"id":24,"name":25,"slug":26},"7c76bfc2-f80f-4ee0-a95d-27bd8708b434","技术","slug",{"id":28,"name":29,"slug":30},"a202d639-99a6-488a-a712-4d4c6ffd7e15","开发","dev",{"id":32,"name":33,"slug":34},"4c2bbea6-eab7-40a8-8447-1de478ff7749","分析","analyse","IETF RFC 8297","https:\u002F\u002Fwww.rfc-editor.org\u002Finfo\u002Frfc8297\u002F","published",null,false,60,0,"2026-10-17T00:00:00.000Z","2026-10-17T03:09:02.662Z",[45,54,62],{"id":46,"type":6,"title":47,"slug":48,"summary":49,"coverUrl":50,"authorName":14,"sno":51,"publishedAt":52,"createdAt":53},"9ccde95c-d754-4808-91f7-488f392e3eeb","你的品牌在AI眼里到底存不存在？这套系统说了算","automated-geo-monitoring-system","靠手动抽查来验证GEO效果，本质上是在跟概率玩游戏。赢一次，不代表能一直赢。","\u002Fuploads\u002F2026-08-07\u002Fdf111c0d-f14a-4b2a-8347-141e96b71654.jpg",1,"2026-08-07T00:00:00.000Z","2026-08-07T04:31:30.843Z",{"id":55,"type":6,"title":56,"slug":57,"summary":58,"coverUrl":59,"authorName":14,"sno":60,"publishedAt":42,"createdAt":61},"9865c835-21fc-4f74-b154-19c054173557","fscrypt：只给手机里的某个文件夹加密，系统怎么做到？","linux-fscrypt-file-based-encryption","Linux fscrypt 在支持的文件系统中为目录树、文件内容和文件名提供文件级加密。它与整盘加密保护的范围不同，也不会隐藏所有文件系统元数据；本文从解锁密钥说到备份与恢复的边界。","\u002Fuploads\u002F2026-10-17\u002Fdec803fe-0da3-4a9e-8ffc-47427cf599d6.jpg",41,"2026-10-17T03:08:37.641Z",{"id":63,"type":6,"title":64,"slug":65,"summary":66,"coverUrl":67,"authorName":14,"sno":68,"publishedAt":69,"createdAt":70},"56d3ebcb-170a-4f96-9134-ae85fb65542b","DANE\u002FTLSA：DNSSEC 能否帮助验证网站的 TLS 证书？","dane-tlsa-dnssec-tls-authentication","DANE 使用 DNS 中的 TLSA 记录发布与 TLS 服务证书或公钥相关的约束，并依赖 DNSSEC 验证记录来源。本文解释它如何补充信任路径，以及为什么它不等于所有网站都能抛弃 CA。","\u002Fuploads\u002F2026-10-13\u002F8c7d9bf5-62c6-47d4-b8eb-c4db7a21fa61.jpg",42,"2026-10-13T00:00:00.000Z","2026-10-13T02:13:55.563Z"]