一、computePressure
API 设计原理与隐私保护机制
1.1 API 设计目标
computePressure
是W3C提出的系统状态监控API,旨在:
• 提供系统资源状态的抽象指标(非精确值)
• 防止通过高精度时序攻击获取用户指纹
• 平衡开发者需求与用户隐私保护
1.2 隐私保护实现方式
// 典型使用示例(合法方式)
if ('computePressure' in window) {
const observer = await computePressureObserver.start({
cpu: {
threshold: 0.5, // 触发通知的阈值
duration: 1000 // 状态持续时长(ms)
}
}, (update) => {
console.log(update.cpuState); // "nominal"/"fair"/"serious"/"critical"
});
}
Chrome通过以下机制保护隐私:
-
数值模糊化:将实际CPU使用率映射到4个离散状态
• nominal (0-30%)• fair (30-50%)
• serious (50-80%)
• critical (80-100%)
-
时间量化:
// Chromium源码中的时间模糊化处理(简化) base::TimeDelta QuantizeTime(base::TimeDelta actual) { constexpr base::TimeDelta kResolution = base::Milliseconds(500); return (actual / kResolution) * kResolution; }
-
事件节流:状态变化通知间隔≥1秒
二、合法精确监控的替代方案
2.1 Web Worker性能估算
// worker-performance-estimator.js
let lastTimestamp = performance.now();
let samples = [];
setInterval(() => {
const now = performance.now();
const delta = now - lastTimestamp;
// 模拟CPU密集型任务
let sum = 0;
for(let i = 0; i < 1000000; i++) sum += Math.random();
const elapsed = performance.now() - now;
const utilization = elapsed / delta;
samples.push(utilization);
if(samples.length > 10) samples.shift(