Fab*_*aux 46 html javascript cookies html5 local-storage
在我以前的网站上,我曾经使用cookie只在第一次访问时显示一个主页.这很好用(例如见这里),但今天使用cookies并不那么时髦,所以我想尽可能地避免它.
现在,我的新网站项目几乎总是通过javascript(显示模式框)预先推出,所以我不需要在服务器端执行任何操作.我正在考虑使用HTML5 localStorage而不是cookie,如果浏览器没有localStorage,则使用cookie备用.这是一个好主意吗?在可用性,隐私保护和网站性能方面有何影响?
使用localStorage可以提高已禁用cookie的用户的可用性.但我知道有些HTML5功能只能在某些浏览器中选择加入(如地理定位).在任何浏览器上都有像localStorage那样的限制吗?是否有任何情况下,如果localStorage可用但我的网站已停用,我将收到JS错误?
Vin*_*aes 76
用户不知道您使用的是localStorage还是cookie.如果用户禁用cookie,localStorage也将无效.
两种方法之间没有明显的速度差异.
sessionStorage仅适用于该浏览器选项卡的会话.如果关闭选项卡,会话将丢失,数据也将丢失,它类似于任何后端语言的会话变量.
localStorage可用于浏览器中的任何选项卡或窗口,并且在用户或程序删除之前一直存在.与Cookie不同,您无法设置到期日期.localStorage也有更大的存储限制.
您可以使用Modernizr验证localStorage是否可用,如果不可用,请使用存储cookie代替.
if (Modernizr.localstorage) {
// supports HTML5 Storage :D
} else {
// does not support HTML5 Storage :(
}
Run Code Online (Sandbox Code Playgroud)
您也可以放弃Modernizr并使用支票typeof Storage !== 'undefined'
.
geo*_*org 31
比较LS与cookies是比较苹果和橙子.
Cookies和LS是完全不同的东西,用于不同的目的.LS是一种工具,允许您的客户端(javascript代码)在本地存储其数据,而无需将其传输到服务器.Cookie是客户端 - 服务器通信的工具.每个请求都要发送cookie的全部内容.
在过去,cookie经常被滥用来模仿本地存储,只是因为它是javascript应用程序向客户端硬盘驱动器写入任何内容的唯一可能性.但通常LS不是cookie的替代品,因此如果您需要客户端和服务器应该读写的东西,请使用cookie,而不是LS.
有一点要补充,不像cookie通常共享交叉协议,存储坚持同源策略.因此,站点共享相同的域,但托管在不同的协议上不共享存储的数据.
假设您的网站需要跨http和https工作.例如,当用户点击"购买链接"时,他们将登陆https安全结账,然后结账将无法检索以前存储在http网站上的数据,即使他们共享同一个域.