背景
在html5出来之前,cookie- 直作为本地存储的一个方法来使用。后来html5提供了-种在客户端本地保存数据的功能,它就是Web Storage,具体来说,Web Storage又分为两种:localStorage和sessionStotage在客户端存储数据,WebStorage的目的是克服由cookie所带来的一些限制,当数据需要被严格控制在客户端时,不需要持续的将数据发回服务器。
cookie
cookie英文饼干,顾名思义,大小应该非常小,cookie非常小,它的大小限制在4kb左右,是网景公司的前雇员在1993年发明。它的主要用于保存登陆信息,比如你登陆某个网站市场可以看到记住密码,这就是通过在cookie中存入一段辨别用户身份的数据来实现的。
localStorage
localStorage是HTML 5标准中新加入的技术,当然早在IE6时代就有一个userData的东西用于本地存储,而当时考虑到浏览器的兼容性,更通用的方案是使用flash。如今localStorage被大多数浏览器所支持。
sessionStorage
sessionStorage.与localStorage的接类似,但保存数据的生命周期与localStorage不同,做过后端的同学都知道Session这个词,翻译过来就是会话。而sessionStorage是前端的一 个概念。它只是可以将一部分数据在当前会话中保存下来,刷新页面数据依旧存在。但是页面关闭后,sessionStorage中的数据就会被清空。
cookie和webStorage对比
- 数据上的生命周期的不同
Cookie一般由服务器生成,可设置失效时间,如果在浏览器端生成cookie,默认是关闭后失效。localStorage除非被永久清除,否则永久保存。
sessionStorage仅在当前会话会有效,关闭页面或浏览器后被清除 - 存放数据的大小不同
Cookie -般为4kb
localStorage和sessionStorage一般为5M或更大 - 与服务器端通信不同
Cookie每次都会携带HTTP头中,如果使用cookie保存过多数据会带来性能问题
localStorage和sessionStorage仅在客户端(即浏览器)中保存,不参与和服务器的通信。 - 作用域不同
sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;
localstorage在所有同源窗口中都是共享的;也就是说只要浏览器不关闭,数据仍然存在
cookie: 也是在所有同源窗口中都是共享的.也就是说只要浏览器不关闭,数据仍然存在
session
是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中
cookie和session对比:
- cookie数据存放在客户的浏览器上,session数据放在服务器上
- cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。用户验证这种场合一般会用 session
- session保存在服务器,客户端不知道其中的信息;反之,cookie保存在客户端,服务器能够知道其中的信息
- session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie
- session中保存的是对象,cookie中保存的是字符串
- session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到,而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的
- Cookie: 是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
*形象类比~~~~*
客户端和服务端之间的通信交流,可以这样简单理解: 比如当你在个推技术分享沙龙上觉得某位讲师讲得很好,在会后问了他几个问题,他对你这些问题进行了回答,这就是一个会话。但这个讲师太受欢迎,于是工作人员收集问题,并给每个提问者一个号码牌,讲师按照号码牌依次给出相应解答并告诉相应的人。这就是
Session
。一段时间后,当你再次遇见这位讲师,他发现你身上有上次回复你的答案,知晓你是那个好学的程序猿。于是你欣喜若狂,哇塞,讲师居然认出我了,这就是Cookie
,你的小甜点。客户端好比听课的技术爱好者,服务端就是这位讲师。