长表单需要自动保存
别名: 草稿自动保存 · form autosave · draft save · 未提交保留
概念解释
长表单的填写跨过数分钟到数天,期间会切应用、来电、刷新、进程被杀。自动保存把尚未提交的值按时间或按变更写入可恢复的草稿,使人在回来时不必从第一项重来。短登录框不需要这层;申请、报税、病历、多步结账需要。这条只谈长表要不要把未提交值留下来,不谈保存那一瞬间要不要给一句「已保存」,也不谈密码和证件号该不该进草稿。崩溃恢复里「要不要让人确认再覆盖」是另一族的问题。
机制
人的填写会话比页面会话长。浏览器把一次刷新当成新文档,操作系统把一次内存回收当成进程结束,表单若只活在内存里,工作在边界上归零。自动保存把值从「这次页面」挪到「这次任务」。第二层是中断不可预约:来电、验证码短信、查邮箱拿证件号,都是任务内的合法离开。没有草稿,离开的成本等于已填时长,人会在需要离开的那一项放弃整张表。保存的粒度要能覆盖「写完一项去查资料」这种自然切口,而不是只在点「下一步」时写盘——下一步常常到不了。本地草稿顶得住刷新,顶不住换设备;服务端草稿顶得住换设备,前提是人还登录着。长表两边都需要,只做一侧会在另一侧的中断上失败。
怎么研究
让人填一张至少八分钟的表,中途插入强制离开(刷新、切走两分钟、杀进程),比较无草稿、仅本地、仅服务端。
自变量:是否自动写草稿、触发(定时 / 失焦 / 下一步)、草稿存在本地还是账号下。 因变量:中断后恢复的字段比例、因中断导致的放弃、恢复后出现过期值的次数。
实验室里中断是安排好的,真实中断更脏(系统更新、登录过期)。要把「登录过期后草稿还在不在」单独测。不要用短任务的完成率证明不需要自动保存。
边界
两三个字段、总时长低于一分钟的表,自动保存的工程成本和「草稿残留」的隐私成本高于收益。公共电脑上的本地草稿是泄露,应仅用会话级内存或明确的「这是公共设备」开关。只读回看、已经提交成功的表不应再写新草稿,以免把已提交结果冲成旧草稿。协作表单多人同时编辑时,自动保存会变成冲突源,需要另套合并,而不是静默覆盖。
怎么落地
- 预计填写超过几分钟或跨步的表,在字段失焦或短间隔定时把未提交值写入草稿;不要等到「下一步」或「保存草稿」按钮。
- 同时做本地与登录后的服务端两份,刷新用本地,换设备用服务端;未登录时至少保住本地。
- 再次打开同一任务时恢复草稿,而不是丢弃后给一张空表。
- 验证:填到一半刷新,值还在。杀进程再打开,值还在。换一台已登录的设备打开同一申请,值还在。把保存只绑在「下一步」上作为反例,在第一步中途刷新,确认那种实现会丢数据。