当一个网页同时发出多个网络请求时,这些请求通常会争用相同的带宽。分析、日志记录或后台同步等非关键数据应降低优先级,以便用户发起的数据提取或关键数据提取可以更快完成。
如何实现
- 识别后台请求:确定哪些
fetch()调用针对的是不影响即时用户体验的非必要数据。 - 应用提取优先级:将
priority: 'low'选项添加到fetch()初始化对象中。
示例代码
// Use high priority (default) for critical UI updates
const criticalData = await fetch('/api/data');
// Explicitly deprioritize background analytics
fetch('/api/analytics', {
method: 'POST',
body: JSON.stringify(eventData),
// Lower the priority to prevent network contention
priority: 'low'
});
最佳做法
- 请使用
priority: 'low'来处理当前视图不需要的分析、信标或遥测数据。 - 务必使用
priority: 'low'“预提取”用户稍后可能需要的数据,确保不会拖慢用户现在需要的数据。 - 请勿将
priority: 'low'用于对用户体验至关重要的提取。 - 请勿在提取选项对象中使用已废弃的
importance键。正确的密钥为priority。
后备策略
Fetch API 中的 priority 选项是一项渐进增强功能。不支持该选项的浏览器会忽略该选项,并以默认优先级处理请求。对于基本用法,不需要显式特征检测或回退逻辑。