使用localStorage而不是Cookies有什么缺点?
在我以前的网站上,我以前只是在第一次访问时才使用cookie来显示预置主页。 这很好( 例如在这里看到 ),但使用cookie并不是如此新潮,所以我想尽可能地避免它。
现在,我的新网站项目几乎总是通过javascript(显示一个模式框)启动预置家,所以我不需要在服务器端做任何操作。 我正在考虑使用HTML5 localStorage而不是cookie,如果浏览器没有localStorage,则会返回cookie。 这是一个好主意吗? 对可用性,隐私保护和网站性能有什么影响?
使用localStorage可以提高禁用cookies的用户的可用性。 但是我知道某些HTML5function只能在某些浏览器中select使用(如地理定位)。 在任何浏览器上对localStorage有没有限制? 是否有任何情况下,如果localStorage可用,但我的网站停用,我会得到一个JS错误?
可用性
用户不知道您是否使用localStorage或cookie。 如果用户禁用cookies,则localStorage也不起作用。
性能
两种方法之间没有明显的速度差异。
的sessionStorage
sessionStorage仅用于该浏览器选项卡的会话。 如果closures该选项卡,会话将丢失,数据也会丢失,这与任何后端语言的会话variables类似。
localStorage的
localStorage将可用于浏览器中的任何选项卡或窗口,并将存在,直到它被用户或程序删除。 与cookie不同,您不能设置到期。 localStorage也有更大的存储限制。
你的问题
- 你不使用这个数据服务器端,所以你不需要一个cookie。 localStorage不会像Cookie一样发送到服务器。
- 如果用户禁用cookies,则localStorage也将不起作用。
后备示例
您可以使用Modernizr来validationlocalStorage是否可用,如果没有,请使用存储cookie。
if (Modernizr.localstorage) { // supports HTML5 Storage :D } else { // does not support HTML5 Storage :( }
您也可以放弃Modernizr并使用typeof Storage !== 'undefined'
检查typestypeof Storage !== 'undefined'
。
比较LS vscookies是比较苹果和橙子。
Cookies和LS是完全不同的东西,用于不同的目的。 LS是一个工具,它允许您的客户端 (JavaScript代码)在本地存储其数据,而不会传输到服务器。 Cookies是用于客户端 – 服务器通信的工具。 cookies的全部内容将随每个请求一起发送。
在过去,cookies往往被滥用来模拟本地存储,只是因为它是JavaScript应用程序向客户端硬盘写入任何东西的唯一可能性。 但是一般来说LS不是cookie的替代品,所以如果你需要客户端和服务器端应该读写的东西,那么就使用cookies而不是LS。
有一点要补充的是,与cookie正常共享的交叉协议不同,存储遵循同源策略。 因此,站点共享相同的域,但托pipe在不同的协议上不共享存储的数据。
说你的网站是否需要通过http和https工作。 例如,当用户点击“购买链接”时,他们将登陆https安全结账,那么即使他们共享相同的域名,结账也将无法检索之前存储在http站点上的数据。
服务器读取localStorage并不容易 。 这可能会派上用场,虽然知道你的数据都是客户端的,从而使其免受嗅探的危害。
Cookies不能被覆盖,只能添加和阅读:
alert(document.cookie); document.cookie = "nope"; alert(document.cookie);