0Pricing
HTML Academy · 课时

预加载、预获取与预连接

提示浏览器尽早获取关键资源

预加载、预获取与预连接 是 CoddyKit 上的免费 HTML Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 HTML Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 HTML Academy 课程共包含 4 节课。

为什么需要资源提示?

现代浏览器只有在解析 HTML 时才会发现资源。资源提示(<head> 中 link rel 属性)可以告诉浏览器“我很快就会需要这个资源”,让网络请求比正常发现资源的时间更早开始。

preload 立即加载

<link rel="preload" as="..." href="..."> 会告诉浏览器立即获取资源,并根据 as 类型设置适当的优先级。请将它用于页面必定需要的资源:主视觉图片、关键字体和路由级 JavaScript。

<link rel="preload" as="font" type="font/woff2" href="/inter.woff2" crossorigin>

as 属性

始终设置 as——它决定请求优先级、Accept 标头以及 CSP 的执行方式。常见值包括:“script”“style”“font”“image”和“fetch”。如果没有 as,浏览器会忽略 preload 并记录警告。

字体需要 crossorigin

即使字体来自同源,字体 preload 也需要 crossorigin。没有它,浏览器会在实际使用字体时以 CORS 模式获取,但在 preload 时以匿名模式获取,导致下载两次——这是一个隐蔽而常见的性能错误。

prefetch 稍后加载

<link rel="prefetch" href="..."> 提示浏览器某个资源将在未来的导航中使用。浏览器会在空闲时间以最低优先级获取它,然后将其缓存,使下一页面能够立即完成绘制。

<link rel="prefetch" href="/next-page.html">

preconnect 预热连接

<link rel="preconnect" href="https://api.example.com"> 会告诉浏览器在首次请求到达之前,先与第三方源站完成 DNS、TCP 和 TLS 握手。请将它用于页面即将访问的 API 主机和内容分发网络。

<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

dns-prefetch 是更轻量的选择

<link rel="dns-prefetch"> 只执行 DNS 查询,比 preconnect 的成本更低。当第三方主机很多、无法为每个主机建立完整的 preconnect 时,可以使用它;对最关键的少数源站使用 preconnect。

限制资源提示

过多的 preload 会争夺相同的带宽,拖慢页面速度。只对阻塞关键渲染路径的资源使用 preload——通常是一张主视觉图片和一两种关键字体。其他资源可以正常发现。

使用 modulepreload 预加载 ES 模块

<link rel="modulepreload" href="/app.js"> 不仅会预加载模块文件,还会预加载其依赖树。这可以避免原生 ES 模块常见的级联下载瀑布:每个导入都要等待前一个导入完成解析。

衡量影响

使用网络面板的 Initiator 列确认预加载资源确实提前获取,并使用 Lighthouse 的“预连接到所需源站”审计来发现遗漏的机会。移除一个缓慢但未使用的 preload,往往和添加一个有效的 preload 带来同样多的收益。

每种提示的特性

如果资源在约 3 秒内未被使用,preload 会触发控制台警告。在网络或内存压力下,浏览器可能会取消 prefetch。preconnect 连接在闲置约 10 秒后会关闭,因此应将它用于即将请求的资源。

知识检查

preconnect 做了什么,而 dns-prefetch 没有做什么?

总结

preload 会立即获取关键资源(必要时配合 as 和 crossorigin)。prefetch 会在空闲时间缓存可能在下一次导航中使用的资源。preconnect(TCP+TLS)和 dns-prefetch(仅 DNS)会预热到第三方源站的连接。请谨慎使用并进行测量。

常见问题解答

「预加载、预获取与预连接」课时是免费的吗?

是的 — 「预加载、预获取与预连接」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 HTML Academy 课程的其余内容,请升级到 CoddyKit PRO。 HTML Academy 课程共包含 4 节课。

「预加载、预获取与预连接」这节课中我会学到什么?

提示浏览器尽早获取关键资源 你通过在浏览器中直接运行的动手代码来练习 HTML Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 HTML Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 HTML Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「预加载、预获取与预连接」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 HTML Academy 课中编写并运行代码吗?

能。每节 HTML Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. async 和 defer 属性
  2. 预加载、预获取与预连接
  3. 图像延迟加载:loading=lazy
  4. 资源提示:modulepreload
← 返回 HTML Academy