fetch() 的 priority 选项根本不存在,不是标准 api,所有浏览器均不支持;实际调用会报 typeerror 或静默忽略,真正影响优先级需依赖 preload、发起时机、上下文等间接手段。

fetch() 的 priority 选项目前**根本不存在**——它不是标准 API 的一部分,任何浏览器都不支持。
为什么你搜到的 priority 示例会报错或无效
部分开发者误将 requestPriority(Chrome 实验性私有 API)、importance(<link rel="preload"> 属性)或 Service Worker 中的 event.preloadRequest 优先级逻辑,混淆为 fetch() 的原生参数。实际调用 fetch(url, { priority: 'high' }) 会导致:
TypeError: fetch() received an unknown option 'priority'- 或静默忽略该字段(取决于浏览器实现),请求仍按默认优先级发出
真正能影响 Fetch 请求优先级的可行方式
浏览器根据请求上下文自动推断优先级,无法通过 JS 主动“标注”,但可通过以下手段间接引导:
- 使用
<link rel="preload">提前声明关键资源(如字体、首屏 JS/CSS),其importance属性(high/low)会被遵守(仅限 preload 场景) - 把高优请求放在 HTML 文档顶部(如内联
<script></script>中立即发起的fetch()),比 DOMContentLoaded 后触发的请求更早进入网络队列 - 避免在长任务中阻塞主线程发起 fetch;用
setTimeout(() => fetch(...), 0)或queueMicrotask()让出控制权,防止渲染卡顿间接拉低网络调度权重 - 对非关键资源(如埋点、离线缓存更新),改用
navigator.sendBeacon()或低频fetch()+keepalive: true,减少与主流程争抢带宽
Chrome 的 requestPriority 并非标准,且已弃用
旧版 Chrome 曾支持在 fetch() 的 signal 中传入扩展字段(如 signal.requestPriority = 'high'),但这:
- 仅限 Chromium 内部实验,从未进入 WHATWG Fetch 规范
- 自 Chrome 115 起已被彻底移除,调用即无效
- Firefox / Safari 完全不识别,代码不具备可移植性
若你在调试工具 Network 面板看到某 fetch 请求显示 Priority: high,那只是浏览器基于 URL 扩展名(.js/.css)、请求发起时机、是否在首屏渲染路径中等综合判定的结果,而非 JS 显式指定。
真正需要精细控制加载顺序时,别指望靠一个不存在的 priority 字段——得靠资源预加载策略、代码分割时机、HTTP/2 服务器推送(如适用)或 HTTP/3 的 QPACK 优先级机制,这些才是实际生效的层面。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











