一、JS中的三种数据存储方式
cookie、sessionStorage、localStorage
二、cookie
cookie的定义:
cookie是存储在浏览器上的一小段数据,用来记录某些当页面关闭或者刷新后仍然需要记录的信息。在控制台用document.cookie
可以查看当前正在浏览网站的cookie。
cookie存在的问题:
cookie虽然很方便,但是使用cookie有一个很大的弊端,cookie中的所有数据在客户端就可以被修改,数据非常容易被伪造,那么一些重要的数据就不能放在cookie中了,而且如果cookie中数据字段太多会影响传输效率
三、sessionStorage
当用户用账号和密码登录某个网站后,刷新页面仍然保持登录的状态,服务器如何分辨这次发起请求的用户是刚才登录过的用户呢?这里就是用session保存状态。
用户在输入用户名密码提交给服务器,服务端验证通过后会创建一个session用于记录用户的相关信息,这个session可保存在服务器内存中也可保存在数据库中。
- 创建session后,会把关联的session_id通过setCookie添加到http相应头部
- 浏览器在加载页面时发现响应头部有set-cookie字段,就把这个cookie种到浏览器指定域名下
- 当下次刷新页面时,发送的请求会带上这条cookie,服务端在接收到后根据这个session_id来识别用户。
四、localStorage
-
localStorage是H5本地存储web storage特性的API之一,用于将大量数据(最大5M)保存在浏览器中,保存后数据永远存在不会失效过期,除非用js手动清除。
-
不参与网络传输
-
一般用于性能优化,可以保存图片、js、css、html模板、大量数据
五、cookie、sessionStorage、localStorage之间的区别
相同点:都是存储在客户端
不同点:
1、存储大小
一般浏览器存储cookie最大容量为4k,sessionStorage和localStorage虽然也有存储大小的限制,但是要比cookie大得多。
2、存储有效期:
cookie保存的数据在过期时间之前一直有效,即使关闭浏览器
sessionStorage
保存的数据用于浏览器的一次会话(session),当会话结束(通常是窗口关闭),数据被清空;localStorage
保存的数据长期存在,因为localStorage的数据是写入磁盘中,每次读取数据时,实际上是从硬盘驱动器上读取这些字节。
3、交互方式
cookie的数据会自动的传递到 服务器,服务器端也可以写cookie到客户端
sessionStorage和localStorage不会自动把数据发给服务端,仅在本地保存
参考链接:https://www.jianshu.com/p/775b64b3d35f