当前位置: 首页 > news >正文

JS三种常见的存储机制

1.localStorage

localStorage是HTML5引入的一种持久化存储机制,用于在浏览器中长期保存数据。localStorage中存储的数据没有过期时间,除非被显式清除或代码删除。存储在localStorage中的数据对于同一个域名下的所有页面都是共享的。localStorage可以存储较大量级的数据(通常约为5MB)。

在JavaScript中,可以使用localStorage.setItem(key, value)来设置数据,localStorage.getItem(key)来获取数据,以及localStorage.removeItem(key)来移除数据。

// 设置数据
localStorage.setItem('name', 'John');// 获取数据
const name = localStorage.getItem('name');// 移除数据
localStorage.removeItem('name');

2.sessionStorage 

sessionStorage也是HTML5提供的一种客户端存储机制。sessionStorage用于在浏览器会话期间(即浏览器窗口关闭之前)保存数据。存储在sessionStorage中的数据只能通过相同的源(同一域名、协议和端口)访问。sessionStorage在页面刷新时保持不变,但在新标签页或窗口中打开相同网站时会创建一个新的sessionStorage。

与localStorage类似,可以使用sessionStorage.setItem(key, value)、sessionStorage.getItem(key)和sessionStorage.removeItem(key)方法来操作数据。

// 设置数据
sessionStorage.setItem('name', 'John');// 获取数据
const name = sessionStorage.getItem('name');// 移除数据
sessionStorage.removeItem('name');

3.Cookie 

Cookie是由服务器发送到浏览器并存储在客户端的小型数据文件。它们用于在浏览器之间进行会话跟踪和存储少量数据。每个Cookie都有一个过期时间,可以手动设置或由服务器指定。存储在Cookie中的数据会在每次请求时通过HTTP头部发送到服务器。Cookie的大小通常受到限制(通常为4KB)。

在JavaScript中,可以使用document.cookie属性进行读取和修改Cookie。

// 设置Cookie
document.cookie = 'name=John; expires=Thu, 18 Dec 2022 12:00:00 UTC; path=/';// 获取Cookie
const cookies = document.cookie.split(';');
const name = cookies.find(c => c.trim().startsWith('name=')).split('=')[1];// 移除Cookie
document.cookie = 'name=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';

4.补充 

 1.安全性:
localSiorae和lsessionSiorage存储在刘览器中,如果被恶意攻击者利用)SS攻击等手段获取到其中的数据,则可能会造成隐私泄露等安全问题。因此,在使用localStorage和sessonStorage时,需要注意防范这些攻击。
Cokie在存储时可以设置HtpOnly属性,使得JavaScipt无法访问其中的数据,从而增强了安全性。但是,Cokie的发送机制可能会受到CSRF攻击的影响,因此也需要注意安全问题。

2.数据类型:
localStorage和sessionStorage只能存储字符串类型的数据,如果需要存储其他类型的数据,需要进行序列化和反序列化操作。
Cookie可以存储各种类型的数据,但是需要进行URL编码和解码操作。

3.存储容量:
不同浏览器对于localStorage和sessionStorage的存储容量限制可能不同,需要根据实际情况进行测试。
Cookie的存储容量通常为4KB左右,如果需要存储大量数据,可以考虑使用localStorage或sessionStorage。

5.总结

localStorage和sessionStorage是HTML5提供的两种客户端存储机制,localStorage用于长期保存数据,而sessionStorage用于会话期间的临时存储。Cookie也可以用于在浏览器中存储数据,并且具有过期时间和在每次请求时发送到服务器的特性。localStorage和sessionStorage在同一域名下共享数据,而Cookie在所有页面之间共享。localStorage和sessionStorage可以通过JavaScript的API进行操作,而Cookie需要通过document.cookie属性进行操作。 

http://www.lryc.cn/news/206458.html

相关文章:

  • 【Python机器学习】零基础掌握BaggingClassifier集成学习
  • [晕事]今天做了件晕事26;gcc对strcmp/strncmp的优化
  • 【深度学习】使用Pytorch实现的用于时间序列预测的各种深度学习模型类
  • ts | js | 爬虫小公举分享
  • 实现el-table打印功能,样式对齐,去除滚动条
  • 2022年09月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 【面试经典150 | 链表】两数相加
  • vue路径中“@/“代表什么
  • java springboot2.7 写一个本地 pdf 预览的接口
  • RustDay06------Exercise[81-90]
  • 【Docker从入门到入土 6】Consul详解+Docker https安全认证(附证书申请方式)
  • PCIe架构的处理器系统介绍
  • 国产内存强势崛起,光威龙武挑战D5内存24×2新标杆
  • 矩阵的运算
  • Android 获取SIM卡号码权限申请
  • Linux CentOS 本地yum配置
  • 【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?
  • ubuntu 安装串口工具和添加虚拟串口
  • 【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表
  • 为什么POST请求经常发送两次?
  • 打破总分行数据协作壁垒,DataOps在头部股份制银行的实践|案例研究
  • 测试用例的设计方法(全):边界值分析方法
  • 酷开科技 | 酷开系统沉浸式大屏游戏更解压!
  • 读高性能MySQL(第4版)笔记20_Performance Schema和其他
  • spring cloud Eureka集群模式搭建(IDEA中运行)《二》
  • 大模型(LLM)在电商推荐系统的探索与实践
  • C语言之指针详解
  • 【Java笔记+踩坑】设计模式——原型模式
  • Flutter GetX使用详解
  • 【ARM Coresight 系列文章 3.3 - ARM Coresight SWD 协议详细介绍】