本文详细介绍JavaScript中三种本地数据存储方式:localStorage、sessionStorage和Cookie。涵盖各自的API操作(如setItem、getItem)、存储容量限制、有效期机制及作用域差异。通过对比传递方式、数据大小和生命周期,帮助开发者根据实际需求选择合适的数据持久化方案。
JavaScript本地存储概述
JavaScript提供了三种主要的数据存储机制,分别是:
- sessionStorage
- localStorage
- Cookie
sessionStorage的使用
1. sessionStorage
- sessionStorage的数据仅在当前会话期间有效,一旦页面关闭或浏览器退出,数据将被自动清除;
- setItem(key, value):用于设置指定键名的数据值
- getItem(key):用于获取指定键名的数据值
- removeItem(key):用于移除指定键名的数据
- clear():用于清除当前存储对象中的所有数据
<script>
// 添加数据
window.sessionStorage.setItem("name","李四")
window.sessionStorage.setItem("age",18)
// 获取数据
console.log(window.sessionStorage.getItem("name")) // 李四
// 清除某个数据
window.sessionStorage.removeItem("gender")
// 清空所有数据
window.sessionStorage.clear()
</script>
localStorage的使用
2. localStorage
- localStorage是HTML5标准引入的技术,旨在长期保存网站数据,其保存的数据没有预设的过期时间,除非用户手动删除,否则数据将一直存在;
- localStorage和sessionStorage的最大存储容量通常为5MB,数据仅保存在客户端(即浏览器)中,不参与与服务器的通信过程;
- setItem(key, value):用于设置指定键名的数据值
- getItem(key):用于获取指定键名的数据值
- removeItem(key):用于移除指定键名的数据
- clear():用于清除当前存储对象中的所有数据
<script>
// 添加数据
window.localStorage.setItem("name","张三")
window.localStorage.setItem("age",20)
window.localStorage.setItem("gender","男")
// 获取数据
console.log(window.localStorage.getItem("name")) // 张三
// 清除某个数据
window.localStorage.removeItem("gender")
// 清空所有数据
window.localStorage.clear()
</script>
Cookie的基本概念与操作
3. Cookie
简介 Cookie是存储在用户计算机文本文件中的一些数据,主要用于存储Web页面的用户信息。 Cookie数据以键值对形式存在,每个键值对都包含过期时间。若未设置过期时间,浏览器关闭时Cookie将消失,用户也可手动清除Cookie。 每次HTTP请求都会自动携带Cookie头,若使用Cookie保存过多数据,可能会引发性能问题。 Cookie的内存大小受限,通常每个域名下限制在4KB左右,每个域名大约能存储50个键值对。
基本操作 通过访问document.cookie属性,可以对Cookie进行创建、修改与获取。 默认情况下,Cookie在浏览器关闭时删除,但也可以为Cookie的某个键值对添加一个过期时间。 如果在设置新Cookie时,某个key已经存在,则会更新该key对应的值;否则,新的键值对会与现有的同时存在于Cookie中。
<script>
// 设置cookie
document.cookie = "username=orochiz"
document.cookie = "age=20"
// 读取cookie
var msg = document.cookie
console.log(msg) // username=orochiz; age=20
// 添加过期时间(单位:天)
var d = new Date() // 当前时间 2019-9-25
var days = 3 // 3天
d.setDate(d.getDate() + days)
document.cookie = "username=orochiz;"+"expires="+d
// 删除cookie (给某个键值对设置过期的时间)
d.setDate(d.getDate() - 1)
console.log(document.cookie)
</script>
三种存储方式的对比总结
总结
相同点:都保存在浏览器端,可以通过下图位置查看储存的信息

不同点:
①传递方式不同
Cookie数据始终在同源的HTTP请求中携带(即使不需要),即Cookie会在浏览器和服务器之间来回传递。
sessionStorage和localStorage不会自动将数据发送给服务器,数据仅保存在本地。
②数据大小不同
Cookie数据包含路径(path)概念,可以限制Cookie仅属于某个路径下。 存储大小限制也不同,Cookie数据不能超过4KB。同时,由于每次HTTP请求都会携带Cookie,因此Cookie只适合保存很小的数据,如会话标识。
sessionStorage和localStorage虽然也有存储大小的限制,但比Cookie大得多,可以达到5MB或更大。
③数据有效期不同
sessionStorage:仅在当前浏览器窗口关闭前有效,因此不可能持久保持;
localStorage:始终有效,即使窗口或浏览器关闭也继续保存,因此适用于持久数据;
Cookie只在设置的Cookie过期时间之前有效,即使窗口或浏览器关闭。
④作用域不同
sessionStorage不在不同的浏览器窗口中共享,即使是访问同一个页面;
localStorage在所有同源窗口中都是共享的;
Cookie也是在所有同源窗口中都是共享的。
Web Storage支持事件通知机制,可以将数据更新的通知发送给监听者。
Web Storage的API接口使用更为方便。
到此这篇关于JavaScript本地存储:localStorage、sessionStorage、Cookie的使用的文章就介绍到这了,更多相关JavaScript本地存储内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!