如题,当然出现这个问题是当初设计的问题,没有做唯一标识识别,解决串号简单,但是该如何兼容老数据是个问题,如何保证上线后,不影响之前用户已经缓存在本地的数据
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 1
串号明显是你的业务代码有问题.
建议做给导图理清楚自己的登录系统的逻辑. 毕竟用 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,要是最开始前缀用的是用户标识就不会有串号的问题了
|