Link 是什么
Link 响应头用一行或多行表达资源之间的链接关系,格式是尖括号包住的地址加上 rel 参数。浏览器据此可以提前预连接、预加载关键资源;爬虫与 API 客户端则据 rel=next、prev 理解分页顺序,据 canonical 找到规范地址。它比 HTML 里的 link 标签更早生效,因为响应头先于文档解析到达,配合 103 Early Hints 还能进一步提前下发。
基本信息
| 名称 | Link |
|---|---|
| 作用 | 声明关联资源与关系类型 |
| 规范 | RFC 8288 Web Linking |
| 格式 | 尖括号地址加分号再加 rel 等参数 |
| 提前下发 | 可随 103 Early Hints 一起返回 |
| 多值写法 | 逗号分隔,或写成多个同名头 |
常见 rel 取值
| rel 值 | 作用 | 备注 |
|---|---|---|
| preload | 预加载指定资源 | 必须带 as 参数,用错会被忽略 |
| preconnect | 提前建立连接 | 适合已知的第三方域名 |
| prefetch | 提前获取,优先级低 | 不保证一定使用 |
| canonical | 声明规范地址 | 可用于合并重复内容 |
| alternate | 替代表示,如其他语言 | 常与分页或移动版配合 |
| next 与 prev | 分页顺序关系 | API 与爬虫据此翻页 |
响应头示例
响应头示例
Link: </assets/app.js>; rel=preload; as=script
Link: <https://cdn.example.com>; rel=preconnect
Link: </p/42>; rel=canonical
Link: </items?page=3>; rel=next, </items?page=1>; rel=prev
# 配合 103 Early Hints 在最终响应前先下发关键资源提示典型使用场景
- 关键资源加速:在响应头阶段就提示浏览器开始加载
- 第三方域名预热:预连接统计、字体或接口域名,减少后续握手开销
- 分页接口:用 next 与 prev 表达翻页关系,客户端不必解析页面里的链接
- 搜索引擎与爬虫配合:声明规范地址,避免重复内容分散权重
- 多语言站点:用 alternate 标注不同语言版本之间的对应关系
preload 必须带正确的 as 参数,否则浏览器识别不出资源类型而直接忽略,表面上配了却没有效果。另外,同一路径同时被响应头 preload 与页面中的标签重复声明时会造成重复请求,配置前先确认页面上是否已有相应的预加载声明。