JavaScript有三种数据存储方式,它们分别是:
(1) sessionStorage
(2) localStorage
(3) cookier
1、sessionStorage
- sessionStorage仅在当前会话下有效,关闭页面或浏览器后,数据被清除;
- sessionStorage.setItem(key,value) 设置数据
- sessionStorage.getItem(key) 获取数据
- sessionStorage.removeItem(key) 移除数据
- sessionStorage.clear() 清除所有数据
<body>
<button id="btn1">存</button>
<button id="btn2">取</button>
<button id="btn3"> 删除 </button>
<button id="btn4">全部清除</button>
<script>
//设置数据
document.getElementById("btn1").addEventListener('click', () => {
sessionStorage.setItem("obj", JSON.stringify({ name: "张三", age: 18 }))
})
//获取数据
document.getElementById("btn2").addEventListener('click', () => {
console.log(sessionStorage.getItem("obj"))
})
//移除数据
document.getElementById("btn3").addEventListener('click', () => {
sessionStorage.removeItem("obj")
})
//清除所有数据
document.getElementById("btn4").addEventListener('click', () => {
sessionStorage.clear()
})
</script>
</body>
2、localStorage
- localStorage 是 HTML5 标准中新加入的技术,用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去删除;
- 仅在当前会话下有效,关闭页面或浏览器后,数据被清除;
- localStorage.setItem(key,value) 设置数据
- localStorage.getItem(key) 获取数据
- localStorage.removeItem(key) 移除数据
- localStorage.clear() 清除所有数据
<body>
<button id="btn1">存</button>
<button id="btn2">取</button>
<button id="btn3"> 删除 </button>
<button id="btn4">全部清除</button>
<script>
//设置数据
document.getElementById("btn1").addEventListener('click', () => {
localStorage.setItem("obj", JSON.stringify({ name: "张三", age: 18 }))
})
//获取数据
document.getElementById("btn2").addEventListener('click', () => {
console.log(localStorage.getItem("obj"))
})
//移除数据
document.getElementById("btn3").addEventListener('click', () => {
localStorage.removeItem("obj")
})
//清除所有数据
document.getElementById("btn4").addEventListener('click', () => {
localStorage.clear()
})
</script>
</body>
3、cookier
cookier介绍Cookie 是一些数据, 存储于你电脑上的文本文件中,用于存储 web 页面的用户信息Cookie 数据是以键值对的形式存在的,每个键值对都有过期时间。如果不设置时间,浏览器关闭,cookie就会消失,当然用户也可以手动清除cookieCookie每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题Cookie内存大小受限,一般每个域名下是4K左右,每个域名大概能存储50个键值对
基本操作使用方法
4、三者的不同点
① 数据存储的内存有区别;
cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。
存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如:会话标识。
sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
② 数据的传递方式有区别;
cookie数据始终在同源的http请求中携带,即使不需要也会在同源的http请求中携带,即cookie在浏览器和服务器间来回传递。
sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
③ 作用域不同;
sessionStorage 无法在不同的浏览器窗口中共享,即使是同一个页面,只在当前标签页共享;
localStorage 在所有同源窗口中都是共享的;
cookie 在所有同源窗口中都是共享的。
Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。
Web Storage 的 api 接口使用更方便。
④ 存储的生命周期不同;
sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;
localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;
cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。