
过去从没在浏览器里写过存很多数据的事情,都是用 ajax 传到服务器里,在 localstorage 只存几个标志位
现在公司项目里有一个需求,就是在浏览器本地存储一些标题,时间,作者昵称之类的,有点 sns 风格的产品,这样就能够避免过多的 ajax 请求了,毕竟感觉 80%的数据都是不变的
百度了点资料,说浏览器的存储能力有限,localstorage 只能存 2M 的东西,我试了一下好像我们的产品最多的情况下需要大约 15MB 到 40MB 的 json 才能存下所有不怎么变化的数据
除了 localstorage 还有没有更好的方法做这种浏览器端的存储?
补充一下需求,客户要求浏览器要支持 Chrome,Firefox,edge, Android, iOS, 360,猎豹
1 yingfengi 2018-10-14 16:34:08 +08:00 via Android 有点奇葩的需求。。。 |
2 1iuh 2018-10-14 16:45:02 +08:00 把这些数据放一个 js 文件里面,正常引用就好,服务器这边设置好返回的 Header 即可, 静态文件浏览器自己会缓存。 |
3 fyibmsd 2018-10-14 16:57:33 +08:00 一本红楼梦才 1MB 好吗 |
4 hronro 2018-10-14 16:58:51 +08:00 indexDB |
5 jiafaner OP |
7 jiafaner OP @hronro 我百度到了这个 http://www.ruanyifeng.com/blog/2018/07/indexeddb.html 能存 250M,足够用了 浏览器好强大,有数据库一样的东西,谢谢啦 |
8 imn1 2018-10-14 17:09:51 +08:00 访问太频繁,请使用 APP 扫码访问 |
9 mahonex 2018-10-14 17:36:11 +08:00 via iPhone https://github.com/localForage/localForage 正在用 和你使用场景差不多 我们用来存二进制 效果还可以 |
10 yhxx 2018-10-14 18:27:23 +08:00 15-40M.。。真可怕 Web SQL 或者 IndexedDB 吧 |
11 whileFalse 2018-10-14 18:27:25 +08:00 你们在用客户端的思路做 web。 如果服务器请求太多,看看是不是接口没设计好,拆的太散了。 |
12 jiafaner OP @whileFalse 接口都是原来 CS 系统时候的接口改成了 HTTP 的,改服务端的成本太高了,很多逻辑都不清楚没办法只能想办法在客户端搞搞 |
13 whileFalse 2018-10-14 18:35:11 +08:00 @jiafaner 几个办法: 1. 搞个中间层服务器,把你们原始服务器上的数据添加上那些静态的玩意再返回客户端 2. 浏览器用到哪个数据再缓存到 localstorage 里。别一上来就直接拉 15m 的缓存啊。 3. 向楼上说的,搞个 js 存数据。js 带版本号。数据变了之后页面引用的版本号改一下。 |
14 jiafaner OP |
15 wbrobot 2018-10-14 21:12:24 +08:00 via iPhone 个人变成 V2EX 网友任务系列…… |
16 otakustay 2018-10-14 22:14:00 +08:00 那啥,其实不考虑直接用 HTTP Cache 搞定么,也没慢到哪里去 |