如何区分 preload 和 prefetch 在前端中的作用?
preload 与 prefetch 的区别在于加载时机、优先级和应用场景。前者用于关键资源,后者用于预加载未来需要的内容。
preload和prefetch是HTML中的资源加载优化技术,主要用于加快页面资源加载速度。它们的关键区别在于加载时机、优先级和使用场景。
主要区别如下:
- 加载时机:
- preload:在当前页面的渲染过程中立即以高优先级加载资源,不拖延主线程执行,但仅下载资源不执行代码。
- prefetch:在当前页面的空闲阶段以低优先级加载资源,只有在浏览器空闲时才请求,避免占用高带宽或优先任务资源。
- 优先级:
- preload:具有较高浏览器优先级(通常在Top或High级别),适合确保关键资源的加载。
- prefetch:优先级较低(Idle或Low级别),仅用于加载非核心资源以减少页面干扰。
- 执行资源:
- 两者均只将资源下载到缓存中,不会自动执行脚本或渲染内容。需资源真正使用时(如script标签加载或引用),浏览器从缓存中取用资源执行。
<link rel="preload" href="app.js" as="script"> <link rel="prefetch" href="optional-script.js" as="script">
- 两者均只将资源下载到缓存中,不会自动执行脚本或渲染内容。需资源真正使用时(如script标签加载或引用),浏览器从缓存中取用资源执行。
- 适用场景:
- preload:适用于当前页面首屏所需的资源,如首屏CSS、关键JS或首屏图片,提升LCP(最大内容绘制)速度。例如首屏大图的快速渲染。
- prefetch:用于加载未来导航才用的资源,如后续页面入口的JS或CSS内容,改善子页面访问感知速度而非当前页面首屏。
在面试中,可强调实际应用原则:use preload for crucial visible page elements first, prefetch for optional later-used content.