SEO 百科
资源优先级
本页目录
资源优先级
资源优先级指浏览器下载页面资源时排出先后次序,也指站长用提示去影响这个次序的做法[1]。浏览器会按资源类型与位置自动分配优先级,多数时候够用;站长可以用 preload、preconnect 与 fetchpriority 去调整,把首屏关键资源提前[2]。用错提示会让真正重要的文件排队更久,收益反而变成损失。
优先级的分配
浏览器按资源类型与位置给出默认次序[2]:
<head>里阻塞渲染的样式:最高;- 未加
defer的<head>脚本:高; - 用
preload标明的资源:高; - 首屏图片:较高;
- 屏幕外图片与延迟加载资源:低。
提示的种类
preconnect:提前与跨域服务器建立连接;dns-prefetch:只提前做域名解析,成本更低;preload:提前拉取当前页面要用的关键资源;prefetch:提前拉取后续页面可能要用的资源;fetchpriority:就单个资源给出高或低的提示。
该提前的资源
只提前那些晚才能被发现的资源:样式表里引用的字体、CSS 背景图、由脚本插入的资源。这几类资源浏览器在解析初期看不到,preload 才有价值[1]。
<!-- 提前取回样式表里的字体,并预热字体域名 -->
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preload" href="/fonts/body.woff2" as="font" type="font/woff2" crossorigin>
<!-- 首屏大图提高抓取优先级 -->
<img src="/hero.webp" width="1200" height="600" fetchpriority="high" alt="示例横幅">
用错的后果
- 一次预加载过多资源,带宽被分走,关键文件反而更慢;
- 给用不到的资源加
preload,浏览器会在控制台提示「预加载但未使用」; - 字体预加载漏写
crossorigin,浏览器会再下载一次; - 抬高一个资源的优先级,等于压低同页面其他资源的次序。
HTTP Archive 的统计显示,资源提示的写法差异很大,误用并不少见[4]。
改动带来的代价
每条提示都要维护:换域名、换字体、换图片路径,提示也得跟着改,漏改就留下一条无效请求。预加载会与浏览器自身的调度打架,调过头需要反复测。把提示写进构建流程能减轻维护,但增加了配置的复杂度。
与抓取和收录的关系
提示只作用于浏览器与 CDN 的取数过程,爬虫按自己的调度抓取,不受这些标签影响。百度把搜索分成抓取、建立索引、展现三步[3],抓取这一步与资源提示无关。提示影响的是首屏速度,以及页面体验这一路的排序参考。
附录
参见
参考资料
官方(境外)
- 《rel=preload》,MDN Web Docs。
- 《使用 Fetch Priority API 优化资源加载》,web.dev。
官方(国内)
- 《百度搜索的工作原理》,百度搜索资源平台,2023-12-21 更新。
第三方
- 《Web Almanac: Resource Hints》,HTTP Archive,2021。
外部链接
无。