JavaScript中预取Prefetch与预加载Preload策略

张开发
2026/4/17 0:00:46 15 分钟阅读

分享文章

JavaScript中预取Prefetch与预加载Preload策略
Preload用于立即加载当前导航关键资源如CSS、首屏图片Prefetch用于空闲时预载后续可能访问的资源如路由组件。二者不可混用且需配合as属性、crossorigin等正确配置。预取Prefetch和预加载Preload都是浏览器资源提示机制但目标不同Preload 是让浏览器立即获取当前导航必需的关键资源而 Prefetch 是让浏览器在空闲时提前下载将来可能用到的资源。用错场景会导致性能下降或浪费带宽。Preload 用于关键路径资源Preload 告诉浏览器“这个资源马上就要用别等解析完 HTML 再发起请求”。它强制提前触发 fetch且不阻塞页面渲染适合 CSS、关键字体、首屏 hero 图、核心 JS 模块等。必须通过 link relpreload 声明且需指定 as 属性如 asscript、asfont否则浏览器无法确定优先级和 CORS 行为 不支持跨域匿名请求的资源如字体要加 crossorigin 属性否则会重复请求 不能滥用对非首屏、非关键资源 Preload 可能抢占带宽反而拖慢主内容加载Prefetch 用于未来导航资源Prefetch 针对的是用户“下一步可能访问”的内容比如下一页的 JS、某个路由组件、搜索建议接口的 JSON 模板。浏览器只在空闲时CPU 和网络负载低才发起请求且优先级极低。常用 link relprefetch 声明通常放在 head 中也可由 JS 动态注入 适用于 SPA 中按需路由如点击“订单页”前 prefetch 对应 chunk、登录后 prefetch 个人中心资源等场景 注意兼容性Safari 对 prefetch 支持较弱iOS 16.4 才稳定部分安卓 WebView 可能忽略可降级为 IntersectionObserver 触发懒加载别混淆 preload/prefetch/preconnect/dns-prefetch它们解决的问题层级不同 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手依托大模型帮助用户记录、整理和分析音视频内容体验用大模型做音视频笔记、整理会议记录。

更多文章