文档开发者中心
我的

vue两种常见缓存策略的数据交互处理方案

1 缓存形式说明

vue常使用的两种缓存策略,一种为vue的router中使用keep-alive,一种为使用vuex的store.两者对比见表格:

缓存策略router中使用keep-alivevuex的store
用法个人博客官方博客
优点1.比较灵活;<br>2.基本不需学习1.方便统一管理数据;<br>2.多个router之间传输数据十分方便;
缺点1.多个router之间数据传输较困难;<br>2.统一管理数据困难且效率低;1.页面内部与input等内容交互时不方便,像v-model这样的语法糖需要拆开;<br>2.需要一定的学习过程和良好的设计理念;
适用场合刚开始使用vue的新手(只需配置即可)更高效管理通用数据的情况;<br>建议通过模块化使vuex的耦合性降到最低;

3 数据交互处理

以部门模块和需要选择部门的用户模块为例进行说明.

此处的数据交互问题包含两个问题:

  1. 在本地操作,当前模块的数据改变时(如增加部门),影响到另一模块的数据引用(此时再增加用户时选择的部门,如果只是单纯被缓存,则不会体现这种变化);

  2. 在本地操作,当前模块的数据改变时,影响另一个地点的数据引用;

问题二情景的自主实现必然需要后台的支持,更加复杂,本博客不予考虑.一般而言,这种情况建议用户直接刷新页面来解决问题二;
对于问题一,理论上可以仅通过前台实现自主产生影响,这里分别讲下两种缓存策略如何实现这种自主影响.

3.1 keep-alive缓存策略

由于keep-alive对于数据统一管理的不便性,难以有效率的查询出被影响模块的数据引用.且即使找出了被影响模块,也难以使用有效方法重新读取缓存数据.
基于此,可考虑将所有可能被影响到的数据在切换router时,均重新加载.

activated(){
     //这里仅重新加载可能会被影响的数据
    //reload code
},

这样会牺牲一定的效率,但除了时间,对于用户使用而言,并没有太不好的影响.

3.2 vuex的store数据管理

由于vuex的store内部数据都是相互交通,统一管理的,因此既容易检测到数据变化(数据变化需要经过mutations),也容易对被影响数据进行重新加载(有些场合甚至不需重新加载,即使加载也仅需加载一遍).

以此来看,vuex的store在处理数据交互问题上十分优秀.


作者:社哥

原链接:

点赞
收藏
回复
1
分享
举报
浏览426 发布于2019-11-18 08:59未知归属地
全部评论
最多点赞
最新发布
最早发布

看起来还不错


1楼回复于2019-11-20 06:59 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。