本文源自道招网的# 参考主流平台优化邮件项目的自动保存草稿机制
背景
邮件项目目前有两处支持自动保存草稿
- 场景一:在编辑邮件过程中切换至其它邮件,编辑内容自动保存为邮件草稿。
- 场景二:在主窗口编辑邮件时点击“独立窗口打开”,主窗口编辑内容自动保存草稿,独立窗口加载该草稿。
待优化点:
- 依赖明确的页面跳转或者点击行为触发保存草稿,没有实时保存机制
- 场景二中切换独立窗口过程依赖服务端来完成草稿信息存、取,容易受到网络等因素影响
主流产品保存草稿方案调研
现存方案
163邮箱
- 行为保存 页面跳转或主动点击保存时自动保存,在顶部给予提示
-
实时保存 5分钟后执行一次自动保存检查,内容有变化则提交服务端
-
独立窗口 打开邮件,写邮件、查看邮件默认是使用新开标签窗口来打开页面,无独立窗口。
QQ邮箱
- 行为保存 判断当前是否存在内容变更,有则进行二次弹框确认,否则直接跳转。
- 实时保存
- 独立窗口 在编辑邮件时支持新开浏览器窗口写信。
主窗口暂存当前邮件信息至window下全局变量,window.open新开窗口,新窗口加载主窗口全局变量信息。
Outlook
-
行为保存 页面切换自动保存
-
自动保存 每30秒执行一次自动保存检查,如果编辑器内容发生改变则提交服务器。新开窗口后自动保存检查仍由主窗口完成。
-
独立窗口 window.open新开窗口,新窗口通过使用主窗口共享变量的方式加载当前邮件信息。
Gmail
输入后立即保存至服务端
结论
主流邮件平台保存草稿的机制基本类似,主要有以下几点:
- 除主动保存点击外,其它从当前编辑页跳出的操作行为,都会保存草稿至服务端。
- 使用定时器实现自动保存检查,如果编辑内容较上次发生变更则提交草稿至服务端。
- 新开窗口加载的草稿数据直接来源于主窗口的草稿数据,不需要借助于服务端。
总结
现有邮件项目将采取以下措施改进现有自动保存机制
- 提供对当前编辑器内容是否发生变更的判断能力
- 加入对当前编辑内容的自动保存定时执行机制,检查发生内容变更则及时保存至服务端
- 新开窗口加载邮件草稿数据不再借助服务端完成存取,直接通过前端数据共享或通信完成即可