本文源自道招网的# 邮件项目草稿存取优化实践
在之前调研了各大主流邮件平台草稿保存方案现状(具体见参考主流平台优化邮件项目的自动保存草稿机制)后,我们可以据此对自己当前项目进行改进了。
各邮件产品方案对比
产品 | 跳转行为保存 | 自动保存 | 独立窗口 | 提交草稿条件 |
---|---|---|---|---|
163邮箱 | 提交草稿,toast提示 | 每5分钟执行提交草稿 | 不支持 | 若内容变化则提交服务端 |
QQ邮箱 | 二次确认提示后提交草稿 | 每30秒执行提交草稿 每30秒执行保存本地缓存 | 支持 | 若内容变化则提交服务端 |
Outlook邮箱 | 提交草稿,无提示 | 每30秒执行提交草稿 | 支持 | 若内容变化则提交服务端 |
Gmail邮箱 | 提交草稿,无提示 | 输入后实时提交草稿 | 支持 | 不论内容是否变化直接提交服务端 |
当前项目 | schema唤起场景给予二次确认提示;其他场景直接提交草稿,无提示 | 不支持 | 支持 | 不论内容是否变化直接提交服务端 |
主流邮件平台保存草稿机制
- 自动保存草稿
1 提交流程:仅当编辑邮件内容发生变化时才会提交至服务端
2 触发时机:编辑邮件途中的跳转行为+自动执行
- 独立窗口
新开窗口加载的草稿内容直接由前端通过主窗口进行数据传递,不需要借助于服务端。
改进
1 能判断当前编辑邮件是否发生变化
与服务端同步草稿数据后更新草稿前端记录值。
2 自动保存草稿
每30秒执行一次保存草稿,若编辑邮件发生变化则提交服务端。
3 切换独立窗口数据传递
切换至独立窗口过程中草稿数据传递改用窗口间能共享的本地存储(比如indexDB)或者通知消息(比如BroadcastChannel)来完成。
改进后流程对比
改进前流程
改进后流程