富文本编辑文章redis自动保存bug修复

2020年04月23日 21:10

翟码农博客一直用的summernote编辑器写文章的。


以前有时候遇到电脑突然断电,或者网络突然掉线,导致写好的文章不翼而飞了。


痛心疾首过两三次,才下决心优化一下这块的功能。


优化的操作:

在编辑页面,用js的setInterval方法实现每隔1分钟就自动提交文章内容的效果。
为避免对mysql数据库操作过多,每个文章的redis key都设了一个有效时间:10分钟。
当文章的redis key过期了,就把redis里的内容,写入到mysql db里面去。


以上就是之前优化后的情形。


上面优化给如今带来的问题:

当有时候无意打开了同一篇文章的多个编辑页面,就造成两边都在同步更新,就会出现我一直在这边写文章,结果可能却被另一边的内容覆盖掉,就导致我写了好半天,结果和没写一样的效果。


现在针对这个问题,本人又进一步的优化了:

redis里对编辑的文章设置一个key值,当进入编辑页时,设置值为1;当点击保存后,设置值为0;在进入编辑文章的逻辑里,判断是否已处于编辑状态,如果已处于编辑状态,就自动跳转到列表页面。

可是上面的解决方法还是有点瑕疵,当本人进入编辑文章页后,并没有点击保存,直接切换到后台其它菜单页面去了,就导致再次去编辑文章,就永远提示处于编辑状态,而无法编辑了。


目前为了辅助解决上面这一情形的问题,新增了一个去锁的功能:就是去掉所有文章的正在编辑的状态标志。


具体实现:

将上面的编辑状态值,由原本的字符串型,变为了hash类型,这样去锁时,直接删除管理文章编辑状态的这个hash类型的redis key就可以了(如果是字符串类型,还需要知道文章id,然后根据文章id找到对应的redis key值)


虽然体验不佳,但是暂时就这样子解决问题吧。利用docker进行redis的主从结构部署的那篇文章,就是遇到了明明写完发布了,结果第二天发现居然被腰斩了。上面体验不佳只是费事一点,总比之前文章被腰斩只好重新撰写费时的好。


本文为翟码农个人博客里有关开发过程中bug修复的原创文章,转载请注明出处:http://www.zhai14.com/blog/the-bug-fix-of-auto-save-in-editing-article.html




  • 2020年04月23日 20:41文章创建
  • 2020年04月23日 21:10文章发布
我要评论
«-必填,限2-20个字符,中文/字母/字母数字组合
«-评论后,邮箱会收到激活链接,未激活邮箱的留言,将无法显示
评论列表
暂无评论,期待你的评论哦!
回到顶部