有啥方法可以单独在 html 和 javascript 中实现持久的、可共享的存储?

Posted

技术标签:

【中文标题】有啥方法可以单独在 html 和 javascript 中实现持久的、可共享的存储?【英文标题】:What ways are there to achieve persistent, shareable storage in html & javascript alone?有什么方法可以单独在 html 和 javascript 中实现持久的、可共享的存储? 【发布时间】:2012-08-11 07:26:05 【问题描述】:

编辑: 让我试着用一个用例来澄清一下。我希望能够在不运行我自己的服务器的情况下在 html/javascript 页面上运行一个简单的聊天框。我可以很好地编写聊天应用程序的 javascript,但没有解决方案允许我存储数据以使所有浏览用户都可以看到聊天消息。所以我的应用程序会接受数据,将其发布到第三方数据存储(理想情况下只是 json 格式),并定期从数据存储中轮询更新。这不是我唯一会使用这种 json 存储服务/json 存储引擎的事情,但它是最清楚的例子。


随着 html5 走在最前沿,我正在稍微远离服务器端编程,并探索我可以用 html 和 javascript 做多少事情,就我以前必须用 html 实现的功能而言/ php/sql 服务器堆栈。例如,在这个新生的 html5 网站上:http://tersh.royronalds.com/ 我正在重用 flickr 来托管图片,而 tumblr 来托管博客文章。然而,作为一个例子,我现在发现自己想要编写一个动态的待办事项列表,其中可以添加项目并将其标记为已完成,并在此期间公开显示。另一个例子可能是一个简单、持久的聊天框。

例如,我不想使用 ajax 来推送布尔数据和有关聊天消息的文本以及对 php 脚本的更改,然后将数据存储在 mysql 数据库中,我更愿意将数据推送到/从第三方商店,提供与 localstorage API 相同类型的功能,但用于 json。

所以我想使用一些带有公共 js API 的存储方法来解决这个问题,例如一些存储 json 的方法,或者任何真正支持字符串和数字的最终格式,并且可以存储和检索,类似于 localStorage,除了持久性和可共享性。

这样的事情有哪些公共技术/解决方案?

【问题讨论】:

基本上您只需要能够仅使用 js 读写数据库即可? 也许可以试试 google drive sdk (developers.google.com/drive/v2/reference)?我猜想,无论你使用什么公共通用的东西,都比用几行代码来包装数据库建立一个简单而廉价的共享主机环境要复杂得多。在现代网站中,后端只是变成了 json 泵,但它们仍然存在...... 是的,网站上只有 js。显然,存储引擎可以是第三方服务器上所需的任何东西,尽管我希望它不必很复杂。我会检查谷歌驱动器的东西,看看它是否会做我正在寻找的东西。虽然是的,但我希望使用其他人的 api 实现起来会更复杂,这意味着我不必在每个站点实例的服务器上运行 php/apache/mysql 甚至 node.js/mongodb,而且个人该网站可以在任何托管静态 html 文件的地方托管页面,同时仍然具有强大的功能。 【参考方案1】:

这方面的选择很少,即使它们不是很好,也不是很好。

首先,与服务器端数据库最密切相关的是 Web SQL 数据库。这不是 W3C 推荐的功能(它不使用 SQLite 作为后端),但是,Chrome、Opera、Safari 和 Firefox(带有附加组件)目前支持它。

Spec

其次,我们有索引数据库 API。这些仅受 Chrome 和 Firefox 支持。 (还有 IE 10,但谁在乎呢?)它与普通数据库有更大的不同,但它是 W3C 推荐的方法。

Spec

第三,我们有本地存储。这不是一个类似数据库的系统,它更类似于 cookie。但是,这些本地存储项比 cookie 更好,因为它们每个都是键值对(并且使用起来非常直观,我可能会补充)。例如:

// Store value on the browser permanently
localStorage.setItem('key', 'value');
// Retrieve value
localStorage.getItem('key');
//Remove value
localStorage.removeItem('key');
//This is just a small selection of actions you can perform

SpecHelpful Resource

第四,您或许应该快速浏览一下离线 HTML。这是一个系统,您站点中的选择文件由浏览器下载,并且可以离线使用。我认为这对您没有用,但请检查一下。

SpecHelpful Guide

您可能会说,我在最后两个方面的经验比第一个要多。无论如何,我希望我能有所帮助。

【讨论】:

是的,我对独立存储很熟悉,提醒一下可用的选项很好,我特别喜欢 localStorage,非常适合保存设置,但当然不能共享。一个很好的用例来解释我正在尝试解决的问题类型的示例是编写一个对所有用户可见的非常简单的聊天框,而无需运行完整的服务器堆栈来保存几行聊天。

以上是关于有啥方法可以单独在 html 和 javascript 中实现持久的、可共享的存储?的主要内容,如果未能解决你的问题,请参考以下文章

在 zeppelin 中完成一个进程后,有啥方法可以运行单独的笔记本?

有啥方法可以在单独的远程 Windows 机器上执行机器人测试吗?

有啥方法可以让我使用 Jquery 为每个元素单独查找类?

oracle中的右连接和左连接有啥区别?如果我们可以实现左连接在右连接中可以做的事情,为啥要使用 2 个单独的连接?

C# winform 引用问题 引用了SHDocVw.dll。 把exe单独拷出来就报异常。 有啥方法解决?

在HTML中IFrame对象有啥方法和属性,可以改变其中显示的内容,也就是改变地址