预加载关键请求

Lighthouse 报告的“机会”部分会将关键请求链中的第三级请求标记为预加载候选对象:

Lighthouse“预加载关键请求”审核的屏幕截图

Lighthouse 标志如何确定预加载候选对象

假设网页的关键请求链如下所示:

index.html |--app.js |--styles.css |--ui.js

您的 index.html 文件声明了 <script src="app.js">。当 app.js 运行时,它会调用 fetch() 以下载 styles.cssui.js。只有在下载、解析并执行最后 2 个资源后,网页才会显示完整。 以上面的示例为例,Lighthouse 会将 styles.cssui.js 标记为候选对象。

潜在节省的时间取决于您声明预加载链接后,浏览器能够提前开始请求的时间。例如,如果 app.js 需要 200 毫秒才能完成下载、解析和执行,那么每个资源的潜在节省时间为 200 毫秒,因为 app.js 不再是每个请求的瓶颈。

预加载请求可以加快网页加载速度。

如果没有预加载链接,系统仅会在下载、解析和执行 app.js 后请求 styles.css 和 ui.js。
如果没有预加载链接,系统会在下载、解析和执行 app.js 后才请求 styles.cssui.js

问题在于,浏览器只有在下载、解析和执行 app.js 后才会意识到最后 2 个资源的存在。 但您知道这些资源很重要,应尽快下载。

在 HTML 中声明预加载链接,以指示浏览器尽快下载关键资源。

<head>
  ...
  <link rel="preload" href="styles.css" as="style" />
  <link rel="preload" href="ui.js" as="script" />
  ...
</head>
使用预加载链接时,系统会同时请求 styles.css 和 ui.js,以及 app.js。
借助预加载链接,系统会在请求 app.js 的同时请求 styles.cssui.js

如需更多指导,另请参阅预加载关键素材资源以提高加载速度

浏览器兼容性

自 2020 年 6 月起,基于 Chromium 的浏览器支持预加载。如需了解最新信息,请参阅浏览器兼容性

预加载的构建工具支持

请参阅 Tooling.Report 的预加载资源页面。

针对特定堆栈的指南

Angular

提前预加载路线,以加快导航速度。

Magento

修改主题背景的布局并添加 <link rel=preload> 标记。

资源