cookie
1.基本概念
Cookie是保存在计算机上的一种文件。当我们使用计算机浏览网页时,服务器会生成一个证书并将其返回给我们的计算机。这个证书就是cookie。一般来说,cookie是服务器写给客户端的文件,也可以称为浏览器缓存。
简单来说,它可以读取并保存你访问网站时产生的一些行为信息,这些信息通常是加密的,否则会侵犯用户的隐私。Cookie也可以帮助加快第二次访问。通常,当我们访问一些网页时,系统会提示我们是否要保存用户名和密码。下次登录时,我们可以自动登录,无需再次登录。
2.用法
1 | //引入js-cookie.js |
1 | //使用 |
3.生命周期与优缺点
1 | //创建Cookie时指定的expires值,就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。 |
优点
Cookie易于使用和实现
实现cookie的使用要比任何其他Internet协议容易得多。
占用更少的内存
不需要任何服务器资源,并存储在用户的计算机上,因此不会给服务器带来额外的负担。
持久性
当在客户端的浏览器上设置Cookie时,它可以持续数天,数月甚至数年。这样可以轻松保存用户首选项和访问信息,并在用户每次返回站点时保持此信息可用。此外,由于Cookie存储在客户端的硬盘上,因此如果服务器崩溃,它们仍然可用。
缺点
不安全
cookie是以明文形式存储,可能会造成安全风险,因为任何人都可以打开并篡改cookie。
数量受到限制
浏览器能创建的 Cookie 数量最多为
300
个,并且每个不能超过4KB
,每个 Web 站点能设置的 Cookie 总数不能超过 20 个。可以被禁用
用户可以选择从浏览器设置中禁用其计算机上的cookie。这意味着用户可以决定不在他的浏览器上使用cookie,这可能会使程序在浏览器的运行中产生一些问题。
SessionStorage和localStorage
1.基本概念
浏览器提供的本地存储机制
2.用法
1 | //它们的 API 基本相同,包括: |
3.生命周期与优缺点
- sessionStorage 只在当前浏览器标签页有效,关闭标签页即失效。localStorage 永久有效,除非主动删除。
localStorage 优点:
- 数据持久存储。除非主动删除,否则一直存在。
- 可以保存结构化数据,如对象、数组。
localStorage 缺点:
- 不能存储敏感数据,因为数据可以被恶意获取。
- 可能导致本地存储空间被占用过多。
sessionStorage 优点:
- 数据临时存储,会话结束自动删除,不会占用过多本地存储空间。
- 可以在同一个会话的不同页面中共享数据。
sessionStorage 缺点:
- 数据不持久,会话结束随之删除。
- 不能保存敏感数据,数据只在客户端,容易被获取。
三者异同
特性 | Cookie | localStorage | sessionStorage |
---|---|---|---|
数据的生命周期 | 一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效 | 除非被清除,否则永久保存 | 仅在当前会话下有效,关闭页面或浏览器后被清除 |
存放数据大小 | 4K左右 | 一般为5MB |
|
与服务器端通信 | 每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题 | 仅在客户端(即浏览器)中保存,不参与和服务器的通信 | |
存储类型 | 只能存储字符串 | 可以存储字符串、布尔值、整数、浮点数、对象、数组等 | |
作用域 | 在同源的窗口/标签页之间共享 | ||
典型使用场景 | 保存用户登录状态、购物车信息等 | 长期保存键值对数据,比如用户偏好设置或浏览历史 | 保存一个会话的信息,在用户登出或浏览器关闭之前一直存在 |