HTML5 网络存储与 Cookie

Posted

技术标签:

【中文标题】HTML5 网络存储与 Cookie【英文标题】:HTML5 Web Storage vs Cookies 【发布时间】:2012-05-18 11:39:08 【问题描述】:

我想向我网站上特定页面的首次访问者显示一条消息。该消息只需要出现一次。

使用 cookie 会很简单,但使用 html5 localStorage 是否有更多好处?如果有,将如何实施?

【问题讨论】:

【参考方案1】:
    HTML5 localStorage 实现起来会容易得多,它不需要这么多行,而且实现起来非常简单。这是一个例子:http://www.w3schools.com/html5/tryit.asp?filename=tryhtml5_webstorage_local_clickcount 此处描述的另一个选项是 cookie。 Cookie 是一种广泛使用的解决方案,但它需要更多的行来编写 cookie,但正如上面提到的那样,优点是 cookie 在许多旧浏览器中都被使用。以下是 cookie 的示例: http://www.w3schools.com/js/tryit.asp?filename=tryjs_cookie_username

展望未来,考虑到 OP 和浏览器都在发生巨大变化,现在越来越多的浏览器必须支持 HTML5,我会考虑 localStorage

【讨论】:

我实际上是在移动环境中使用它,所以这是我考虑使用本地存储的原因之一。谢谢!【参考方案2】:

localstorage 将在用户计算机上保存最多 5 MB 的数据,唯一不好的是存储永远存在,如果您需要过期,则需要这样做,cookie 会自动处理。

使用本地存储的示例:

var 访问次数 = parseInt(localStorage["numVisits"]);

var el = document.getElementById("cookieData");

if (isNaN(visits)) 
    visits = 1;
    el.innerHTML = "Welcome to the site!";
 else 
    visits += 1;
    el.innerHTML = "Welcome back! You've been here " + visits + " times.";


localStorage["numVisits"] = visits;

【讨论】:

【参考方案3】:

即兴发挥,我可能会推荐 cookie,但这取决于您的用户使用的浏览器以及您希望如何呈现您的消息。

Cookie 更适合更广泛的受众,因为所有浏览器都支持它们。 IE 6 和 7 等较旧的浏览器不支持本地存储。 Cookies 也可以在服务器端进行操作。因此,如果您要显示的消息是在服务器端呈现的,那么 cookie 可能是更好的选择。

通过 javascript 访问本地存储稍微容易一些,但使用它并没有太多优势。

【讨论】:

【参考方案4】:

根据您的描述,仅使用 cookie 几乎更容易且更不容易出错。并非所有浏览器都具有相同的 HTML localStorage 实现,尤其是 IE 7+8。但是,它们都使用 cookie,不会出现跨浏览器兼容性问题。

查看此 SO 了解更多信息:Local Storage, Session storage, Web storage, web database and cookies in HTML5

【讨论】:

以上是关于HTML5 网络存储与 Cookie的主要内容,如果未能解决你的问题,请参考以下文章

本地存储和离线缓存

客户端存储之HTML5 web存储

HTML5.与JQUERY与AJAX常见面试题

如何加密 HTML5 网络存储?

HTML5存储--离线存储

客户端本地存储数据