
如题,当然出现这个问题是当初设计的问题,没有做唯一标识识别,解决串号简单,但是该如何兼容老数据是个问题,如何保证上线后,不影响之前用户已经缓存在本地的数据
1 fengxianqi 2019-10-11 20:34:05 +08:00 via Android 让旧数据全部失效 |
2 murmur 2019-10-11 20:51:45 +08:00 注销的时候不清除数据么?或者用 cookies, |
3 ayase252 2019-10-11 20:56:11 +08:00 注销清空所有保存的状态 |
4 lneoi 2019-10-11 20:59:12 +08:00 退出时清空,或者登陆存数据时清空旧数据,也可以增加一个字段做用户识别,看你具体数据情况 |
5 lukunlin 2019-10-11 23:31:24 +08:00 串号明显是你的业务代码有问题. 建议做给导图理清楚自己的登录系统的逻辑. 毕竟用 localStorage 存 token 也好还是其他,那么多人用都没什么问题 |
6 liuy1994g 2019-10-12 03:03:59 +08:00 via Android 你们什么数据这么重要还存本地,直接作废不就行了 |
7 keelii 2019-10-12 06:22:56 +08:00 用 ls 有个基本的逻辑,如果缓存的数据是没有个体差异的那就随便存,如果有那就要在缓存中添加必要的字段来区分数据。不过你得考虑到 ls 有大小限制,并不能让你当数据库使用。 |
8 reus 2019-10-12 06:46:16 +08:00 写代码把老数据迁移就行了 迁移完就删除 |
9 yuang 2019-10-12 07:50:29 +08:00 via Android d2-admin 的做法是使用版本号和用户 id 作为标识,项目更新后之前的缓存自动失效 |
10 hanxiV2EX 2019-10-12 07:59:13 +08:00 via Android 区分用户数据和设备数据,谁生产的垃圾谁收拾。 |
11 IsaacYoung 2019-10-12 08:19:29 +08:00 localStorage.setItem(`${userId: ${key}}`, value) |
12 ashong 2019-10-12 08:23:53 +08:00 via iPhone 查看有没有某个新数据,没有就全部读取写为新格式 |
13 ccyu220 2019-10-12 08:24:33 +08:00 我们系统用 customer id 来做标识符 |
14 xuanbg 2019-10-12 08:38:08 +08:00 数据要长久保存的话,加上用户 ID 作标识,取的时候用用户 ID 作条件查询即可。不需要长久保存的话,注销的时候清理掉就可以了。 |
15 sannyzeng 2019-10-12 09:02:15 +08:00 先检测一下哪些数据是属于会产生串号的数据,打开的时候直接清除。 后续的新数据都加上用户标识,就可以过渡了 |
16 fishbone0 2019-10-12 09:40:43 +08:00 给缓存附带用户唯一标识,串号是你业务代码有问题 |
17 kang77649119 2019-10-12 10:41:11 +08:00 根据用户 id 存数据, 取数据的时候根据用户 id 取,串号问题解决,老数据也不用清除 |
18 sjfkai 2019-10-12 10:45:30 +08:00 老数据可以在用户访问的时候整体刷一遍,带上用户标识。这样不就可以兼容老数据了… |
19 lands 2019-10-12 11:26:31 +08:00 存的时候, key 带上用户标识 |
20 cococoder OP @kang77649119 但是过渡阶段,用户已经缓存在本地的老数据虽然不用清除,但也没用上了 |
22 kang77649119 2019-10-12 14:23:54 +08:00 @cococoder 那就需要看看老数据中是否有数据来区分是属于哪个用户了,如果不属于当前用户就不要使用,属于当前用户就以当前用户为 key,再存一次。 |
23 cococoder OP @kang77649119 hhh 又绕回来了....如果能区分属于哪个用户的,那就不会出现串号的情况了 |
24 KuroNekoFan 2019-10-12 15:07:21 +08:00 要么就是特定用户 id 对应特定信息,要么就是切换用户的时候清空信息 |
25 cococoder OP @fengxianqi 简单粗暴 |
26 Ixizi 2019-10-12 15:10:23 +08:00 默认用老数据 切换用户的时候把老数据清了 切完了存带标识的数据 |
27 MiBAO 2019-10-12 15:46:22 +08:00 这种明显应该是要清除的吧 ,感觉信息尽量不要留着用了就销毁掉 , 退出的时候记得清一些没有清的 |
28 rioshikelong121 2019-10-12 15:53:00 +08:00 自己封装一下 localStorage. 我们项目就是这么干的。 ls 只存非敏感的用户信息。并且对于特殊字段加密存储。 当时这么做的目的是: 因为有好几个网站共用了一个域名,所以封装了一下 localStorage. 在存储的时候自动添加站点前缀做隔离。 |
29 cococoder OP @rioshikelong121 嗯,是自己封装的 ls,要是最开始前缀用的是用户标识就不会有串号的问题了 |