跳转到内容

Periodic Background Sync 支持

发布于 更新于

Periodic Background Sync 让已安装 PWA 的 Service Worker 能够在后台周期性地同步数据, 使应用在启动时就能立即展示最新内容,而不必让用户等待抓取。

  • 图例
  • 支持
  • 部分支持
  • 需开启标志
  • 不支持
  • 未知
浏览器 / 平台支持版本置信度来源备注
Chrome (Desktop)支持80高来源—
Chrome (Android)支持80高来源1
Edge (Desktop)支持80高来源2
Firefox (Desktop)不支持—高来源3
Firefox (Android)不支持—高来源45
Safari (macOS)不支持—高来源6
Safari (iOS)不支持—高来源78
Samsung Internet支持13.0高来源9
WebView (Android)不支持—高来源10
  1. 由 browser-compat-data 镜像自 Chrome 的数据推导。
  2. 由 browser-compat-data 镜像自 Chrome 的数据推导。
  3. browser-compat-data 未记录 Firefox 的支持。
  4. browser-compat-data 未记录 Firefox for Android 的支持。
  5. 由 browser-compat-data 镜像自 Firefox 的数据推导。
  6. browser-compat-data 未记录 Safari 的支持。
  7. browser-compat-data 未记录 iOS 版 Safari 的支持。
  8. 由 browser-compat-data 镜像自 Safari 的数据推导。
  9. 由 browser-compat-data 镜像自 Chrome Android 的数据推导。
  10. 实现跟踪:https://crbug.com/40151529。

源数据: /compatibility/periodic-background-sync.json · 全球使用占比: 72 % (StatCounter 2026-05)

来源: 规范 · MDN · 最近核验 2026-10-03 · 置信度: 高 (由来源计算)

在 Service Worker 就绪后,注册一个带最小间隔(毫秒)的周期同步标签:

async function registerPeriodicSync() {
const registration = await navigator.serviceWorker.ready;
await registration.periodicSync.register('get-latest-news', {
minInterval: 24 * 60 * 60 * 1000,
});
}

在 Service Worker 中按标签处理 periodicsync 事件:

self.addEventListener('periodicsync', (event) => {
if (event.tag === 'get-latest-news') {
event.waitUntil(fetchAndCacheLatestNews());
}
});

在注册之前,先检测 Service Worker 注册对象上是否存在 periodicSync。如果不存在, 则回退为在页面加载时直接刷新内容:

async function scheduleRefresh() {
const registration = await navigator.serviceWorker.ready;
if ('periodicSync' in registration) {
await registration.periodicSync.register('get-latest-news', {
minInterval: 24 * 60 * 60 * 1000,
});
} else {
await fetchAndCacheLatestNews();
}
}
  • Chrome 仅将周期后台同步权限授予已安装并作为独立应用启动的 Web 应用——普通浏览器 标签页中打开的页面不会获得该权限。
  • 实际的同步频率由浏览器而非应用决定,依据站点参与度等信号;应将 minInterval 视为 下限而非保证值。
  • Firefox 与 Safari 均未实现此 API——请始终为这些浏览器提供回退刷新路径(例如页面 加载时刷新)。
  • 为独立的周期任务使用不同的 tag 值,并在 periodicsync 处理函数中根据 event.tag 分支处理。

← 返回兼容性浏览器。