如题,读到 localstorage 不像 cookie,没有过期时间这一说法,产生了一个疑惑。
我感觉大多数网站应该都有使用 localstorage 的需求,毕竟谁不想存点东西呢,cookie 又太小了。但是存下去之后,如果用户关闭了网页界面,那么页面当中的 js 脚本应该是立即关闭的,不会有什么上下文管理器一类的东西来确保资源被正确释放。
如果用户之后再次访问该网站那还好说,如果用户从此不再访问该网站的话,岂不是意味着被这个网站储存的 localstorage 存储空间会被一直占用下去直到天荒地老?
1
devld 2021-03-16 22:13:20 +08:00 via Android
|
2
ASpiral 2021-03-16 23:45:57 +08:00
@devld 按照第一个链接本地测了下,向 localStorage 存储一个长度大于 5242876 的字符串时报错,也就是容量接近 5M ?
第二个链接是 IndexedDB,不是 localStorage 吧 |
3
Quarter 2021-03-16 23:46:22 +08:00 via iPhone
我记得浏览器清缓存是可以清 localStorage 里面的东西的
|
4
iConnect 2021-03-17 00:08:57 +08:00 via Android
存大文件之前还需要判断,满了或存不下,先清后用
|
5
autoxbc 2021-03-17 00:20:13 +08:00
@ASpiral #2 文章里说 IndexedDB,asm.js caching,Cache API,Cookies 被同一个配额工具管理
|
6
wolfan 2021-03-17 00:39:55 +08:00
localStorage 还是可以手动清理的,而且你们都不会不定期的清扫浏览器缓存垃圾吗?
|
7
LeeReamond OP @wolfan 手动清理当然可以,不可以就太奇怪了。不过一般不会手动清理的吧,手动清理不是某安全卫士干的活?正常人就装个 chrome,chrome 又不会提示你清理
|
8
LeeReamond OP @ASpiral 这个 5M 要如何理解,是单 key 对应 5M,还是所有数据加起来不能超过 5M ?
|
9
wolfan 2021-03-17 00:56:40 +08:00
@LeeReamond 呃…… 你真的会用浏览器?还是说你只会浏览网页?清理个缓存垃圾为什么需要 XX 卫士,右上角=更多工具=清理浏览数据 或者设置里找。都是很明显的。
手机浏览器上不也都在设置里有个清理的选项么。 |
10
yyfearth 2021-03-17 01:02:18 +08:00
@LeeReamond 整个不超过 5M
|
11
LeeReamond OP @wolfan 建议提高阅读理解能力,“chrome 又不会提示你清理”的意思是 chrome 不会提示你清理,不是 chrome 不会清理。
|
12
love 2021-03-17 09:00:04 +08:00 via Android 1
这个完全不需要特别关心,因为浏览器整个占用空间不会超过可用空间的一半,否则就会开启清理进程,越长时间不用的就会被优先清理。所以呢你存储空间少的时候他会自动清理,多的时候你也不用关心,这个就相当于一个缓存而已
|
13
ASpiral 2021-03-17 11:27:46 +08:00 via iPhone
作为程序员应该从开发的角度去看吧,比如已有的 localStorage 数据量较大时如何清理,当向 localStorage 写入大量数据时如何处理。
不用考虑用户怎么清理 localStorage 的数据,大部分用户根本不知道 localStorage 的存在 |
14
ch2 2021-03-17 13:05:27 +08:00
localStorage 一般用于保存只适合在本地使用的元数据,它毕竟不是保存文件或者当数据库用的,不会占多大的空间,否则就是误用
|
15
LeeReamond OP @ch2 话说,那这么说的话比如视频网站之类的,已经播放过的进度条不用重新加载,不是靠 js 存在哪个存储里,而是单纯靠浏览器的缓存策略在支撑?
|
16
ch2 2021-03-17 16:44:39 +08:00
@LeeReamond #15 浏览记录是保存在云端的
|
17
LeeReamond OP @ch2 并非浏览记录,你加载完一段视频后,不关闭网页的情况下拖动进度条是不需要再加载的,指这件事
|
18
ch2 2021-03-17 21:05:41 +08:00
@LeeReamond #17 那个包括在内
|
19
LeeReamond OP @ch2 ?我觉得你说的是另外一个东西
|