【问题标题】:Persistent storage on client side客户端的持久存储
【发布时间】:2011-05-15 18:36:30
【问题描述】:

除了在客户端的 cookie 之外,还有什么方法可以拥有一些持久性数据(比如 XML 文件等)?我知道直接使用 JavaScript 是不可能的。但是还有其他方式,比如 Applets 之类的吗??

【问题讨论】:

  • 一个Java小程序可以做到,如果它是数字签名的。但我个人不会安装来自不受信任来源的签名小程序,因为它会打开潜在的安全漏洞。

标签: javascript applet client client-side


【解决方案1】:

【讨论】:

  • 是的。警告:支持因浏览器而异(与任何 HTML5 一样)。
  • 有趣。但是如果客户端是 IE6 或 IE8 呢?插件有什么办法吗?
  • @mihsathe:如果浏览器不支持它(例如 IE6),显然你不能使用它(你必须用 cookie 伪造它)。 IE8 似乎有 一些 支持:stackoverflow.com/questions/3452816/…
  • @mihsathe:不客气。顺便说一句,这可能也很有趣:findmebyip.com/litmus
  • 警告:另外,用户可以随时擦除
【解决方案2】:

如果 cookie 不够用,并且您必须支持旧版浏览器,那么 LawnChair 可能会有所帮助:http://brian.io/lawnchair/plugins/

它就像一个“沙发”,但更小,明白吗?花了我几分钟;)。

而且,它确实适用于桌面浏览器,尽管网站上有关于 mobile-webkit 的宣传:https://github.com/brianleroux/lawnchair/blob/master/README.md

(但是,它使用 cookie 作为适配器来存储那些旧浏览器上的回退数据,大多数此类库可能会,如果您由于某种原因不允许使用 cookie,这些类型的库可能不适合账单。)

【讨论】:

  • 但是我们对存储的 cookie 数量有限制,对吧?还是仅适用于服务器端?
  • 是的,cookie 有限制(取决于浏览器,但每个 cookie 最大 4kb,有时每个域允许少至 30 个),其他本地存储解决方案也是如此,甚至 HTML5 本地存储。这取决于您要存储的内容,但您需要记住它是客户端,您通常希望在那里保留最少的数据。此外,此处列出了所有这些替代方案以及更多替代方案:en.wikipedia.org/wiki/HTTP_cookie#Alternatives_to_cookies
  • 在我看来,LawnChair 和 Yeameen 提到的 YUI 解决方案很相似,都是一个不错的 JS API,它们封装了基于浏览器平台的存储机制。我会看看那些(或其他类似的产品)。
  • 即使是 DOJO 工具包也能做同样的事情。
  • 此答案中的第一个链接已损坏。该网站是否已移至其他地方?
【解决方案3】:

最新的浏览器支持 HTML5 本地存储。

如果客户端不支持 HTML 5,Google Gears 插件允许本地存储。

【讨论】:

  • Gears 很棒,有一段时间用于很多东西,但可以理解的是,他们在今年早些时候将精力转移到了 HTML5 (gearsblog.blogspot.com/2010/02/hello-html5.html)。 Gears 通过作为一个插件(需要用户安装等)来做到这一点。
  • Google Gears 现已弃用。
【解决方案4】:

我们使用YUI's local storage wrapper 已经有一段时间了,没有任何问题。该库自动使用最佳可用存储选项并支持几乎所有浏览器; IE6+、Firefox2.0+ 和更新的 Safari、Chrome 和 Opera。

【讨论】:

    【解决方案5】:

    Html5 本地存储绝对是答案,如果您想了解如何使用此功能的示例,请检查浏览器是否支持它以及如何迭代项目,请查看此链接:http://geoffrey.vandiest.biz/post/2011/04/30/HTML5-Local-Storage.aspx

    【讨论】:

      【解决方案6】:

      这是一个老问题,但有一些非常好的用于客户端存储的新 HTML5 技术值得研究。 您现在可以在 javascript 中执行此操作。

      File-System APIIndexedDB 绝对值得研究,应该留下来!

      为避免安全问题,您存储在客户端计算机上的文件在客户端经过沙盒处理和混淆处理。

      文件系统 API

      File-System API 对于尚不支持文件系统 API 的浏览器,有一个 js you can include to get the desired functionality。您可以请求临时或持久存储。文件系统 API 对文件大小的唯一限制是客户端硬盘驱动器上的可用空间量(加上您请求的配额)。文件系统 api 中的临时存储最多只能为您提供几百 MB(如果幸运的话,几 GB)。对于几乎没有问题的 Web 应用程序,我使用带有 PERSISTENT storage 的两位数 GB。

      索引数据库

      IndexedDB 是一种更广泛的浏览器支持技术。 indexedDB 有更多的文件大小限制,通常您可以使用配额请求获得多达几百 MB 的空间。

      【讨论】:

        【解决方案7】:

        如果您在谷歌浏览器中工作,FSO.js wraps the asynchronous FileSystem API for you 并且非常易于使用。

        这项技术应该很快就会被其他浏览器支持。

        【讨论】:

          【解决方案8】:

          我偶然发现了这个列出许多持久 JS 存储的 Wiki 页面:https://github.com/bebraw/jswiki/wiki/Storage-libraries

          【讨论】:

            猜你喜欢
            • 2010-11-30
            • 1970-01-01
            • 2013-05-14
            • 2012-02-21
            • 2012-08-11
            • 1970-01-01
            • 1970-01-01
            • 2018-01-13
            • 1970-01-01
            相关资源
            最近更新 更多