浏览器端存储数据,cookie、sessionStorage、localStorage,这里重点说说localStorage的实际应用。
cookie、sessionStorage、localStorage
三者都是在浏览器端存储的数据,均同源,区分域。
cookie
cookie
,默认各种浏览器都支持;容量较小、约4K;每次http请求时、浏览器都会把自身存的cookies
发送到服务器,并且在浏览器和服务器之间来回传递,造成带宽浪费;cookie
数据可以设置path、限制该cookie
只属于该路径下。可以设置过期时间、不受浏览器关闭与否的影响。
JavaScript Cookies API
Web Storage
sessionStorage、localStorage
两者是 HTML5 Web Storage API
提供的;IE8+支持;sessionStorage
和 localStorage
仅在本地保存,不会自动随http请求发到服务器;容量较大可达5M。Web Storage
提供丰富接口,数据操作更简便。每个域(包括子域)有独立的存储空间,各个存储空间是完全独立的,因此不会造成数据混乱。
Web Storage API
sessionStorage
会话级别的存储:仅在当前浏览器窗口关闭前有效、sessionStorage
数据一直存在,刷新页面或进入同源的不同页面,数据始终存在。浏览器窗口关闭后,sessionStorage
数据立即被销毁。
localStorage
持久化的本地存储,数据一直存在,直到被主动删除。
基本的存储、读取
前些天在改造一个页面缩放比例提示插件的时候,就是新用到了 localStorage
来存储当前的缩放比例的。这里只是简单说明一下其基本存、取操作:
|
|
当然,若非要兼容 ie6\ie7,那就得用 cookie
了:
|
|
数组的存储、读取
localStorage
存的是字符串,若想要存数组、对象,我们需要在 setItem、getItem
的时候进行转换,主要是通过:
字符串转换成对象、数组:JSON.parse()
对象、数组转换成字符串:JSON.stringify()
近期在做一个颜色选择器控件的时候,需要新增一个最近使用的颜色功能,记录用户最近使用的不超过9种的颜色。用的也是 localStorage
来存储。这里分别定义了2个方法,读和写:
|
|
当然,localStorage 还有其它的一些方法:localStorage.removeItem("key");
删除指定名的localStoragelocalStorage.clear();
清空所有的localStorage