有一次被问到这三个的区别,虽然说出来了,但是不够系统。这里再整理整理。。。
本地存储
包括:localStorage和sessionStorage
其中他俩的大小限制均为5M,仅在客户端(即浏览器)中保存,不参与和服务器的通信。若超出则会报Uncaught QuotaExceededError
错误,因此在开发时应注意控制存储数据保持在限制大小内,并定时清除无用的数据。
注:这个网站专门统计收集并统计访问者使用的浏览器对本地存储空间限制,目前似乎只存储了Android和Chrome浏览器的数据,详情请看:http://dev-test.nemikor.com/web-storage/support-test/
不同的是:sessionStorage在关闭页面或者浏览器的时候就会被清除。localStorage则不会,生命周期是永久的,除非用户清除。同时,不同浏览器之间是无法共享本地存储的。但不同页面之间是可以共享localStorage,不同页面或标签页间无法共享sessionStorage的信息。sessionStorage是存储在服务器上的。
使用方法:(localStorage和sessionStorage的API相同,只需把localStorage换成sessionStorage即可)
localStorage.setItem("key","value");//以“key”为名称存储一个值“value”
localStorage.getItem("key");//获取名称为“key”的值
localStorage.removeItem("key");//删除名称为“key”的信息。
localStorage.clear();//清空localStorage中所有信息
Cookie
用于HTTP是一种无状态的协议,服务器如果只从网络连接是无法识别用户的状态,Cookie就是为了识别不同用户的数据。
Cookie是指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据。
生命期:只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
存放数据大小为4K左右 。每个cookie长度不能超过4KB,否则会被截掉。那么要怎么截取呢?
在InternetExplorer和Opera中,会截取掉老的cookie,为新的cookie让出空间;
在Firefox中,虽然最后设置的Cookie始终保留,但随机决定哪些Cookie被保留。
个人认为cookie的API并不是很好用,所以一般情况下,都会进行重新封装使用。