You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django跨设备临时数据存储方案咨询:在线考试断点续考场景

在线考试断点续考存储实现方案

整体实现思路

核心采用本地兜底存储+后端增量同步的分层架构,既解决设备突发崩溃、断网场景下的即时数据留存,也满足跨设备登录的作答记录一致性要求。

1. 前端本地存储层

  • 选用 localStorage 作为持久化兜底存储,以用户ID_考试ID作为唯一前缀拼接存储key,避免同设备多账号登录的数据冲突
  • 存储内容包含:每道试题的作答内容、当前停留的试题序号、本地最后一次更新时间戳
  • 写入规则:用户每完成一道题的作答后,用300ms防抖触发本地存储更新,避免高频输入场景下的频繁写入损耗性能
  • 可选优化:单页应用可额外搭配sessionStorage做内存级缓存,作为第二重兜底,浏览器崩溃恢复时优先读取localStorage内容

注意:本地存储的数据仅作临时兜底,不可作为最终判分依据,所有数据最终以后端同步后的版本为准

2. 后端持久化存储层

  • 核心存储结构设计:关系型数据库(MySQL/PostgreSQL)中新增考生作答临时表,字段至少包含用户ID、考试ID、试题ID、作答内容、最后更新时间戳、是否提交标记
  • 高并发场景优化:新增Redis缓存层,缓存考生最近15分钟的作答快照,大幅提升同步接口的响应速度;如果是大规模统考场景,可搭配消息队列(Kafka/RabbitMQ)做请求削峰,异步写入数据库避免接口阻塞
  • 同步触发规则:
    • 用户每完成3道题自动触发增量同步,仅上传和上一次同步相比有变更的作答记录
    • 用户切换试题时,自动同步上一道题的作答内容
    • 考试剩余10分钟时提升同步频率,每30秒同步一次全量作答快照
  • 时间校验:所有同步请求的更新时间以后端服务器时间为准,避免本地时间篡改导致的版本冲突

3. 异常恢复逻辑

用户重新登录进入考试页面时按以下流程执行恢复:

  • 先请求后端拉取该用户当前考试的最新作答记录、剩余时长、考试状态
  • 读取本地存储对应考试的快照数据,对比后端返回记录的最后更新时间戳,取时间更新的版本合并
  • 如果本地存储的版本更新,自动在后台将本地的增量变更同步到后端,无需用户手动操作
  • 数据合并完成后自动跳转到用户上次停留的试题位置,全量回显已作答内容
  • 限时考试的剩余时长以后端计算的结束时间戳为准,不受本地时间修改影响

内容的提问来源于stack exchange,提问作者Kevin Owino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:48:03