cookie
会话cookie
是一种临时cookie
,它记录了用户访问站点时的设置和偏好,当用户退出浏览器时,会话cookie
就会被删除。持久cookie
的生存时间更长一些,它存储在用户的硬盘上,浏览器退出或计算机重启时他们仍然存在。会话cookie
与持久cookie
之间的唯一区别就是它们的过期时间。
cookie
会随着每次HTTP
请求头信息一起发送,无形中增加了网络流量,另外,cookie
能存储的数据容量有限,根据浏览器类型不同而不同,IE6
大约只能存储2K
。
localStorage
localStorage
即本地存储,可用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。
特点
- 同源策略限制。若想在不同页面之间对同一个
localStorage
进行操作,这些页面必须在同一协议、同一主机名和同一端口下。(IE8
和9
存储数据仅基于同一主机名,忽略协议(HTTP
和HTTPS
)和端口号的要求) - 只在本地存储。
localStorage
的数据不会跟随HTTP
请求一起发送到服务器,只会在本地生效。 - 永久保存。保存的数据没有过期时间,直到手动去除。
- 存储方式。
localStorage
的存储方式采用key
、value
的方式。value
的值必须为字符串类型(传入非字符串,也会在存储时转换为字符串。true
值会转换为"true"
)。 - 存储上限限制:不同的浏览器存储的上限也不一样,但大多数浏览器把上限限制在
5MB
以下。
sessionStorage
sessionStorage
是HTML5
新增的一个会话存储对象,用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。
特点
-
同源策略限制。若想在不同页面之间对同一个
sessionStorage
进行操作,这些页面必须在同一协议、同一主机名和同一端口下。(IE 8
和9
存储数据仅基于同一主机名,忽略协议(HTTP
和HTTPS
)和端口号的要求)。 -
单标签页限制。
sessionStorage
操作限制在单个标签页中,在此标签页进行同源页面访问都可以共享sessionStorage
数据。 -
只在本地存储。
seesionStorage
的数据不会跟随HTTP
请求一起发送到服务器,只会在本地生效,并在关闭标签页后清除数据。(若使用Chrome
的恢复标签页功能,seesionStorage
的数据也会恢复)。 -
存储方式。
seesionStorage
的存储方式采用key
、value
的方式。value
的值必须为字符串类型(传入非字符串,也会在存储时转换为字符串。true
值会转换为"true"
)。 -
存储上限限制:不同的浏览器存储的上限也不一样,但大多数浏览器把上限限制在
5MB
以下。
Flash ShareObject
这种方式能能解决上面提到的cookie
存储的两个弊端,而且能够跨浏览器,应该说是目前最好的本地存储方案。不过,需要在页面中插入一个Flash
,当浏览器没有安装Flash
控件时就不能用了。所幸的是,没有安装Flash
的用户极少。
缺点:需要安装Flash
插件。
userData
userData
存储通过将数据写入一个UserData
存储区(UserData store
)来保存数据,userData
将数据以XML
格式保存在客户端上,UserData
存储方式只适用于IE
浏览器(window系统+IE
)。
UserData
存储区保存以后,即使IE
浏览器关闭或者刷新了,下一次进入该页面,数据也能够重新载入而不会丢失,也就是数据将一直存在,除非你人为删除或者用脚本设置了该数据的失效期。容量可达到640K
,这种方案是很可靠的,不需要安装额外的插件。
缺点:它仅在IE
下有效。
Google Gear
Google
开发出的一种本地存储技术。支持IE6
、IE7
、FireFox2.0
、FireFox3.0
。
缺点:需要安装Gear
组件。
globalStorage
在浏览器关闭以后,使用globalStorage
存储的信息仍能够保留下来,和sessionStorage
一样,域中任何一个页面存储的信息都能被所有的页面共享。目前只有FF
支持,且只支持当前域下的globalStorage
存储。
参考文章
关于Cookie的知识的总结
HTML5 localStorage本地存储
HTML5 sessionStorage会话存储
IE浏览器下的存储方式——UserData
网友评论