Skip to content

数据同步与离线行为 ​

Novora 的后台编辑不用手动点保存,改动会自动进入同步流程。理解这个过程,能避免「我明明改了但大屏没变」和「刷新后数据回去了」这两类最常见的困惑。

一次修改经历了什么 ​

text
你在后台改了内容
      |
      v
浏览器先记住改动(本地待同步队列)
      |
      v
页面上出现「正在同步」
      |
      v
请求发到服务端,带上版本号
      |
      +-- 版本一致 -> 写入数据库 -> 显示「已保存」
      |
      +-- 版本不一致 -> 触发冲突处理(见下文)

关键点:本地先记录,再上传。所以页面显示的内容会比你想象的更早稳定下来,但只有显示「已保存」才代表云端真的写成功了。

三种状态分别是什么意思 ​

状态含义这时候能关页面吗
正在同步改动已在本地记录,正在发往服务端可以关,但下次打开会继续重试
已保存服务端已确认写入数据库可以,数据已经安全
同步失败请求没成功,改动仍在本地队列里先别关,按提示处理

只要不是「已保存」,都不要假设改动已经生效。发布考试或上课前,务必确认看到「已保存」。

断网时会怎样 ​

断网后继续编辑是允许的,改动会留在本地待同步队列里。恢复网络后系统会自动重试上传,你也可以手动刷新一次页面触发同步。

场景表现
编辑时断网显示同步失败或持续「正在同步」
断网期间继续编辑改动继续进本地队列,不丢
恢复网络自动重试,成功后显示「已保存」
断网期间关闭页面下次在同一浏览器打开时会继续尝试

离线数据只属于这台设备

待同步队列保存在当前浏览器的本地存储里。换电脑、换浏览器、清除站点数据都会丢掉尚未同步的改动。

所以:离线可以编辑,但不要在没同步成功前换设备或清缓存。

两台设备同时修改同一场考试 ​

服务端用版本号判断内容是否被别的设备改过:

  • 版本一致,直接写入;
  • 版本不一致,说明你打开页面之后别处已经改过,系统不会盲目覆盖,而是提示冲突。
text
设备 A 打开考试(版本 5)
设备 B 打开考试(版本 5)
设备 B 改了时间并保存  -> 版本变成 6
设备 A 也改了时间并保存 -> 版本还是 5,与云端 6 不一致
      |
      v
系统提示冲突,让你先看最新内容再决定

处理原则:先看到底哪一处改动更重要,再决定保留哪一版。不要连续点击保存试图「压」过去。

怎么减少冲突 ​

  1. 按模块分工:年级管理员管本年级考试,班级管理员管本班周测;
  2. 同一场考试尽量避免两人同时改;
  3. 改完确认看到「已保存」再交给别人;
  4. 大范围调整(例如批量改周测)安排在非高峰时段。

为什么大屏没立刻变 ​

大屏不是实时推送,而是按自己的节奏同步:

设备同步节奏
教室大屏考试进行中或临近时每 30 秒,其余时间每 60 秒
ClassIsland 插件每 30 秒同步一次

后台显示「已保存」后,大屏可能还要等一会儿。考试开始前请预留几分钟,不要卡着打铃时间改。

清除浏览器缓存会丢什么 ​

内容会丢吗说明
考试、周测、学校结构、用户不会都在数据库里
当前设备绑定的班级会丢需要回首页重新选择
大屏设计与字体偏好会丢需要重新设置
尚未同步成功的改动会丢这是唯一真正有风险的情况

清缓存前先确认没有待同步内容:所有编辑都已经显示「已保存」。

数据是怎么流动的 ​

text
浏览器编辑
    |
    v
服务端接口(校验权限、版本、数据格式)
    |
    v
数据库(唯一权威数据源)
    |
    +--> 教室大屏读取
    +--> ClassIsland 插件读取
    +--> 安排预览与 PDF 生成

数据库是唯一权威来源。大屏、插件和 PDF 都是它的读取方,不会各自保存一份独立数据。

考试记录(V2.8.0 新增)是数据库内部从考试数据自动派生的一份投影,可以随时重建,不构成第二个数据源。

遇到同步问题怎么办 ​

  1. 先看页面提示的是「正在同步」还是「同步失败」;
  2. 检查网络能否打开 /api/time;
  3. 不要急着清缓存——先确认是否有未同步改动;
  4. 仍然失败时记录请求 ID,查错误信息对照表,或进故障排查。

Novora 部署与维护文档