客户端本地存储数据

Posted

技术标签:

【中文标题】客户端本地存储数据【英文标题】:Client side local storage of data 【发布时间】:2011-06-14 22:35:34 【问题描述】:

我想在客户端存储一些数据。 Cookie 是我的第一个倾向,但它们会随每个请求一起发送,对吧?有没有办法在不传输数据的情况下存储数据?我不一定要为每个请求增加 10-20k 的开销。是唯一的替代 html 5 网络存储吗?有多少浏览器采用了它?

【问题讨论】:

Webstorage 是在 IE 8 中实现的,我相信。 【参考方案1】:

html5存储被广泛部署

HTML5 STORAGE SUPPORT
IE  FIREFOX SAFARI  CHROME  OPERA   IPHONE  android
8.0+    3.5+    4.0+    4.0+    10.5+   2.0+    2.0+

您可以了解更多@http://diveintohtml5.ep.io/storage.html

【讨论】:

【参考方案2】:

不,并非所有 cookie 都会随每个请求一起发送。您可以检查 cookie 是否存在,如果不存在,则创建它,如果存在,则读取它。对于少量数据,Cookie 仍然是一个不错的跨浏览器选项。

【讨论】:

这值得澄清。 Cookie 将随每个请求一起发送,除非您使用无 cookie 域来提供静态文件。 很公平。我的意思是说,用户定义的包含网站偏好等的 cookie 不会在每个请求上发送。【参考方案3】:

http://fsojs.com 支持强大的文件存储客户端,但目前仅适用于 Chrome

【讨论】:

【参考方案4】:

正如您所提到的,cookie 是一种选择,HTML5 规范中的网络存储也是一种选择。还可以使用 Flash 存储数据,额外的好处是这些数据可以在同一台机器上的多个浏览器中持续存在,但缺点是您需要为没有 Flash 的用户提供备用方案。

就个人而言,将数据保存在服务器上(由会话 id 或 cookie 标识)是我的做法,您可以控制数据并且不必担心在用户清除缓存时丢失数据或切换机器/设备。它也是最容错的,因为它不依赖于浏览器功能和/或插件(可能除了 cookie)。

还有一件事,如果您正在寻找使用上述所有内容(cookie、闪存、网络存储)的客户端数据存储的抽象,请查看Evercookie

【讨论】:

好吧,我不确定我是否会推荐 Evercookie,因为它的目的是尽可能地邪恶和不可撤销;我认为它更像是一个 PoC,而不是打算使用的东西。但是,我建议可能会考虑一下草坪椅:github.com/brianleroux/lawnchair

以上是关于客户端本地存储数据的主要内容,如果未能解决你的问题,请参考以下文章

如何获取本地存储信息

ESXI的存储出现伪挂载现象

swift--使用UserDefaults来进行本地数据存储

如何保护(加密)由 webkit/本地存储存储的数据

localStorage本地存储

常用的本地存储-----cookie篇