无需登录 数据私有 本地保存

Periodic Sync 事件模拟器 - 手动触发并查看结果

32
0
0
0
网络: 在线 电池: 充电中 权限: 已授予 SW状态: 已激活 最小间隔: 12h (浏览器策略)
注册 Periodic Sync
用于在 Service Worker 中识别不同的同步任务。
毫秒
实际浏览器最小间隔约12小时 (43200000ms)。此处为模拟值,手动触发可绕过。
已注册 Sync 列表 0
暂无已注册的 Sync 任务

使用上方表单注册一个 Periodic Sync

手动触发 Sync
执行日志
--:--:-- 🟢 Periodic Sync 模拟器已就绪。注册一个 Sync 标签来开始。
--:--:-- 📋 环境检测:模拟 SW 已激活 | 权限已授予 | 网络在线 | 充电中
最近获取的模拟数据
尚未触发任何 Sync。触发后将在此显示模拟获取的数据。

常见问题与知识点

什么是 Periodic Background Sync API?

Periodic Background Sync(周期性后台同步)是 Web API 的一部分,允许已安装的 PWA(渐进式 Web 应用)在后台定期从服务器获取最新数据。它依赖于 Service Worker,能够在用户未打开页面的情况下执行同步任务,非常适合新闻、天气、邮件等需要定期更新内容的应用。

核心特点:

  • 需要 HTTPS 环境
  • 需要网站被安装为 PWA(添加到主屏幕)
  • 最小同步间隔通常为 12 小时(浏览器可调整)
  • 浏览器会根据网络状态、电池状态等条件智能调度
Periodic Sync 与 Background Sync 有什么区别?

Background Sync(后台同步):用于在网络恢复后立即发送/完成一次性的数据操作。例如:离线时用户提交表单,网络恢复后自动发送。这是一次性行为。

Periodic Sync(周期性同步):用于定期获取新内容。例如:每天定时检查新闻更新、天气变化等。这是重复性行为,按间隔周期执行。

简单记忆:Background Sync = "等网络好了就发",Periodic Sync = "每隔一段时间就检查更新"。

浏览器的触发条件有哪些?

浏览器在决定是否执行 Periodic Sync 时,通常会考虑以下条件:

  • 网络连接:设备必须在线(有网络连接)
  • 最小间隔:距离上次成功同步必须超过 minInterval
  • 电池状态:优先在设备充电时执行,避免消耗电池
  • 用户活跃度:可能在用户不活跃时执行,减少对前台应用的影响
  • 权限:必须授予 periodic-background-sync 权限
  • 站点参与度:浏览器可能根据用户与站点的交互频率来分配同步机会

本模拟器允许手动切换这些条件,帮助开发者理解各条件的影响。

如何在 Service Worker 中监听 Periodic Sync 事件?

在 Service Worker 文件中添加以下代码:

self.addEventListener('periodicsync', (event) => {
                    if (event.tag === 'content-sync') {
                    event.waitUntil(
                    fetchLatestContent().then(data => {
                    // 更新缓存或通知用户
                    return updateCache(data);
                    })
                    );
                    }
                    });

每个 Sync 通过 event.tag 来区分不同的同步任务。

浏览器兼容性如何?

截至 2024 年,Periodic Background Sync API 主要在基于 Chromium 的浏览器中可用(Chrome、Edge、Opera 等),需要 Android 平台上的 PWA 安装支持。桌面端和 iOS 的支持较为有限。

建议使用特性检测:'periodicSync' in ServiceWorkerRegistration.prototype 来判断浏览器是否支持。

minInterval 设置多大合适?

浏览器通常强制最小间隔为 12 小时(43200000 毫秒)。设置更小的值不会生效,浏览器会使用自己的最小值。建议根据内容更新频率合理设置:

  • 新闻类应用:12-24 小时
  • 天气应用:1-6 小时(但浏览器可能仍限制为12h)
  • 社交媒体:12-24 小时

注意:过于频繁的同步会消耗电池和数据流量,浏览器会限制频率以保护用户。

gRPC-Web 一元调用测试器 - 发送请求并查看序列化

输入 gRPC 服务地址和方法,构造 JSON 请求体,观察转为二进制帧并接收响应解码。

Webpack 打包分析器 - stats.json 可视化

上传 webpack 的 stats.json,生成交互式树状图、模块大小排名,辅助优化构建体积。

Web Share API 实践器 - 调用系统分享对话框

触发系统原生分享,支持分享文本、链接与文件,检查浏览器兼容性与支持级别。

内容索引 API 查看器 - 管理离线可用内容列表

添加、列出和删除内容索引中的条目,展示离线可用内容。

Git 提交信息生成器 - 遵循约定式提交自动补全

选择类型、作用域并填写描述,自动生成符合Conventional Commits规范的提交消息。

URL协议处理器检查 - 自定义协议是否注册

检测浏览器是否支持特定自定义协议(如mailto:, tg:),并尝试调用。

本地HTTPS代理演示 - 请求转发排查

通过Service Worker或本地fetch模拟拦截和转发请求,查看修改后的请求响应。

页面标题层级分析器 - h1~h6 结构检查

输入 HTML 或网址,提取所有标题标签,生成文档大纲树,检测跳跃和缺失。

URL参数可视化提取 - 分层解析查询串

粘贴带参数的URL,以表格形式列出所有Query参数与值。

Flexbox属性速查 - 可视对照表

可视化Flexbox容器和子项的所有属性及选项,鼠标悬停预览效果。

Lottie动画预览器 - 拖放JSON查看动效

加载Lottie动画JSON文件,播放并控制速度、方向,预览动效效果。

Webhook URL 测试器 - 自定义发送 JSON 并查看日志

向指定 Webhook URL 发送自定义 JSON 负载,查看响应状态码和内容,记录发送历史。

反馈表单构造器 - 打分/文本/多选一键生成

拖拽题型构建客户或员工反馈表,支持NPS、星级评分,导出填写链接或二维码。

Brainfuck在线解释器 - 步进调试

编写Brainfuck代码,以可视化的方式步进执行,观察活动纸带和指针。

最新

Svelte 反应式声明查看器 - 可视化 $: 依赖链

解析 Svelte 组件的反应式声明,绘制变量之间的依赖关系链,便于理解更新逻辑。

OpenID Connect Discovery 浏览器 - 获取身份配置

输入OpenID Provider域名,自动请求 .well-known/openid-configuration 并格式化显示。

Cookie同意横幅配置器 - GDPR/CCPA 自定义样式

实时预览并生成符合隐私法规的Cookie同意横幅HTML/CSS/JS代码,一键嵌入网站。

SharedArrayBuffer 通信演示 - 跨 Worker 共享内存

在主线程和 Worker 之间使用 SharedArrayBuffer 和 Atomics 进行同步通信。

OffscreenCanvas性能演示 - Worker中绘图对比

分别使用主线程Canvas和OffscreenCanvas在Worker中渲染动画,对比FPS和流畅度。

Query String解析器 - URL参数编码解码

将URL查询字符串转换为键值对对象,编辑并重新生成编码后的查询参数,支持多层嵌套。

屏幕唤醒锁测试器 - 保持常亮应用演示

请求Screen Wake Lock防止屏幕关闭,监听释放事件,适用于观看长内容等场景。

内存分页替换模拟 - FIFO/LRU/OPT动画

设定物理页框数,输入页引用串,动画展示不同页面置换算法的缺页率。

JSON 查询演练场 - JMESPath/JSONPath 即时评测

在可视化环境中编写JSONPath或JMESPath表达式,实时高亮匹配结果并查看路径提取逻辑。

测试覆盖率可视化器 - 上传 lcov 文件查看行覆盖

拖放 lcov.info 文件,以颜色标示每行代码的覆盖状态。

震动模式编辑器 - 自定义设备振动序列

设计振动时长与停顿数组,点击试振,复制代码在移动端触发自定义触感反馈。

最新

Web Worker 质数搜索器 - 不阻塞界面计算

在后台 Worker 中计算大范围内的质数,主线程实时绘制进度条,展示多线程优势。

最新

Catmull-Clark 细分曲面演示 - 控制网格迭代

载入简单控制网格,执行 Catmull-Clark 细分一次,观察光滑效果。

URL Scheme测试器 - 自定义/常见协议

快速检测系统是否支持特定的URL Scheme(如mailto:、tel:、tg:)。

悬停提示框生成器 - 纯CSS/JS气泡样式定制

选择触发位置、箭头方向与样式,生成轻量悬停提示框代码。

最新

.env 文件对比合并器 - 找出缺失与差异变量

上传两个 .env 文件,高亮仅在其中一个文件中存在的变量,快速同步环境配置。