过去从没在浏览器里写过存很多数据的事情,都是用 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 1
把这些数据放一个 js 文件里面,正常引用就好,服务器这边设置好返回的 Header 即可, 静态文件浏览器自己会缓存。
|
3
fyibmsd 2018-10-14 16:57:33 +08:00
一本红楼梦才 1MB 好吗
|
4
hronro 2018-10-14 16:58:51 +08:00 1
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 搞定么,也没慢到哪里去
|