HTML5 - localStorage,Cookies和SQL

时间:2011-08-25 15:13:13

标签: javascript sql html5 cookies local-storage

根据我在SO上看到的大量搜索结果,HTML5的localStorage功能似乎只有在您需要存储不需要传输到服务器的大部分数据时才会优于Cookie。 (Local Storage vs Cookies

我很难理解如何/为什么有人会使用此功能。任何人都可以提供一个链接到一个真实世界的例子来说明localStorage是如何受益的吗?

此外,是否有过使用localStorage的情况......比如......将某些信息写入SQL数据库?

很抱歉,如果这与本网站上无数的HTML5问题重复。我已经阅读了一些,他们都没有完全回答我的问题。提前谢谢!

1 个答案:

答案 0 :(得分:6)

localStorage是存储应用程序设置的好地方,您希望在会话之间(而不是sessionStorage)保留这些应用程序设置,而不是传输到服务器(而不是cookie)。以前,为了避免不必要地将基于cookie的设置传输到服务器,您必须仅为cookie使用不同的子域。

下一个重要的优点是虽然在引擎盖下localStorage使用SQLite,但浏览器会将所有localStorage值缓存在内存中。因此,虽然使用数据库API,每个executeSql语句都是异步的,并且需要回调函数来获取数据,但localStorage完全同步,因为它直接从内存缓存中获取数据。这意味着从localStorage存储和检索大块数据的速度非常快。

实现localStorage对象的方式也使得在代码中使用非常简单直观。您是否知道,例如,您可以像使用getItemsetItem一样使用localStorage吗?

localStorage.someKeyName = 'someValue';
alert(localStorage.someKeyName); // alerts 'someValue'
delete localStorage.someKeyName; // removes the key

将此值与从数据库中检索单个记录所需的代码量进行比较:

var db = openDatabase('myDb', '', '', 1024);
db.compatibleReadTransaction(function (t) {
    t.executeSql('SELECT someField FROM someTable WHERE somePrimaryKey = 1', function(t, r) {
        console.log(r.rows.item(0));
    }, function () {
        // error
    });
});

真实世界的例子

g.joeblade.com处的Guardian网络应用程序将所有文章内容存储在localStorage中。这意味着页面加载是即时的。如果要将内容存储在数据库中,那么它几乎不会像从数据库中异步获取每篇文章一样快,然后就会调用SQLite查询引擎,运行回调等开销。上。