数据持久化与临时存储的对决:localStorage 与 sessionStorage(下)

news2024/10/5 19:16:27

在这里插入图片描述

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

  • 四、 `sessionStorage` 的使用场景和示例
    • 介绍 `sessionStorage` 在会话管理、临时数据存储等方面的用途
    • 提供一个使用 `sessionStorage` 存储购物车商品信息的示例
  • 五、 `localStorage` 和 `sessionStorage` 的注意事项
    • 强调数据存储大小限制和安全性考虑
    • 提醒用户可能遇到的跨域问题
  • 六、总结
    • 回顾 `localStorage` 和 `sessionStorage` 的主要特点和应用场景

四、 sessionStorage 的使用场景和示例

介绍 sessionStorage 在会话管理、临时数据存储等方面的用途

sessionStorage是 HTML5 提供的一种在浏览器中存储数据的方式,它用于在当前会话期间存储数据。与localStorage不同,sessionStorage的数据在浏览器关闭后会被自动清除。

以下是sessionStorage在会话管理和临时数据存储方面的一些常见用途:

  1. 会话状态管理:可以使用sessionStorage来存储与当前会话相关的数据,例如登录状态、用户信息等。这样,在用户在同一会话中浏览不同页面时,可以方便地获取和更新这些数据。

  2. 购物车管理:在电子商务网站中,可以使用sessionStorage来存储用户的购物车信息。当用户添加或删除商品时,购物车的数据可以实时更新,并且在用户关闭浏览器或会话结束后自动清除。

  3. 临时数据存储sessionStorage可以用于存储一些临时的数据,例如用户在表单中输入的数据、临时生成的验证码等。这些数据在当前会话中可用,可以方便地在页面之间共享。

  4. 缓存数据:可以使用sessionStorage来缓存一些数据,例如查询结果、页面布局等。这样可以减少服务器请求,提高页面加载速度。

需要注意的是,sessionStorage的存储空间是有限的,不同的浏览器可能有不同的限制。通常,每个域名下的sessionStorage存储空间大约为 5MB 至 10MB。此外,sessionStorage仅在当前会话中可用,并且在浏览器关闭后会被清除。如果需要长期存储数据,建议使用localStorage或后端数据库。

提供一个使用 sessionStorage 存储购物车商品信息的示例

以下是一个简单的示例,使用 sessionStorage 来存储购物车商品信息:

<!DOCTYPE html>
<html>
<body>

<h2>购物车</h2>

<button onclick="addItemToCart()">添加商品</button>
<button onclick="clearCart()">清空购物车</button>

<ul id="cartItems"></ul>

<script>
// 获取或设置存储的购物车信息
function getCart() {
  return sessionStorage.getItem('cart') || [];
}

function setCart(cart) {
  sessionStorage.setItem('cart', JSON.stringify(cart));
}

// 添加商品到购物车
function addItemToCart() {
  var cart = getCart();
  cart.push({
    name: '商品名称',
    price: 10
  });
  setCart(cart);
  updateCartUI();
}

// 清空购物车
function clearCart() {
  sessionStorage.removeItem('cart');
  updateCartUI();
}

// 更新购物车 UI
function updateCartUI() {
  var cart = getCart();
  var cartItems = document.getElementById('cartItems');

  cartItems.innerHTML = '';
  for (var i = 0; i < cart.length; i++) {
    var item = cart[i];
    var li = document.createElement('li');
    li.textContent = item.name + ' - ' + item.price;
    cartItems.appendChild(li);
  }
}

// 在页面加载时,从 sessionStorage 中获取购物车信息,并更新 UI
document.addEventListener('DOMContentLoaded', function() {
  updateCartUI();
});
</script>

</body>
</html>

在这个示例中,我们使用 sessionStorage 来存储购物车信息。当用户点击 “添加商品” 按钮时,会将一个包含商品名称和价格的对象添加到购物车中,并通过 setCart() 方法将购物车信息存储到 sessionStorage 中。updateCartUI() 函数会根据购物车信息更新页面的 UI。

当用户点击 “清空购物车” 按钮时,会通过 clearCart() 方法从 sessionStorage 中删除购物车信息,并再次更新 UI。

请注意,这只是一个简单的示例,实际的购物车应用可能需要考虑更多的因素,如商品数量、删除商品、计算总价等。

五、 localStoragesessionStorage 的注意事项

强调数据存储大小限制和安全性考虑

localStoragesessionStorage是 HTML5 提供的两种在浏览器中存储数据的方式,它们都有一些注意事项,特别是在数据存储大小限制和安全性方面:

  1. 数据存储大小限制

    localStoragesessionStorage都有一定的存储大小限制。不同的浏览器可能有不同的限制,一般来说,localStorage的存储容量通常在几兆字节到几十兆字节之间,而sessionStorage的存储容量通常较小,一般在几百千字节到几兆字节之间。请注意,这些限制可能会因浏览器和操作系统而异。

    由于存储空间有限,你应该只存储必要的数据,并定期清理过期或不再需要的数据,以避免达到存储上限。如果需要存储大量数据,考虑使用后端数据库或其他外部存储解决方案。

  2. 安全性考虑

    localStoragesessionStorage的数据都是存储在客户端浏览器中的,因此它们可能受到一些安全风险的影响。他人可能通过访问同一台设备或使用恶意软件来获取存储的数据。

    对于敏感数据或需要保护的数据,不要将其存储在localStoragesessionStorage中。如果必须存储敏感数据,请使用加密技术对其进行保护。

    另外,localStorage的数据在浏览器关闭后仍然可以保留,而sessionStorage的数据在会话结束后(例如关闭浏览器窗口或标签页)会被清除。因此,如果你存储了敏感数据在localStorage中,确保在适当的时候清除它们,例如在用户登出或浏览器关闭时。

总之,在使用localStoragesessionStorage时,要注意数据存储大小限制,并谨慎处理敏感数据的存储和保护。根据实际需求选择合适的存储方式,并采取适当的安全措施来保护用户的数据隐私和安全性。

提醒用户可能遇到的跨域问题

localStoragesessionStorage在使用时需要注意一些跨域问题。跨域是指当一个网页尝试访问来自不同域(域名、协议、端口)的资源时,可能会受到浏览器的安全限制。

以下是一些可能遇到的跨域问题及注意事项:

  1. 同源策略限制:浏览器的同源策略限制了脚本对不同源的访问。对于localStoragesessionStorage,它们只能在同一源(相同的协议、域名和端口)的页面之间进行通信和共享数据。如果尝试在不同源的页面之间访问或修改localStoragesessionStorage的数据,将会受到限制。

    例如,如果你在https://example.com的页面中设置了localStorage数据,然后在http://example.org的页面中尝试读取或修改该数据,将会失败,因为它们属于不同的源。

  2. 跨站请求伪造(CSRF)攻击:由于localStorage的数据可以在同一源的不同页面之间共享,如果一个恶意站点通过跨站请求伪造攻击(CSRF)获取了用户在其他站点的localStorage数据,就可能造成用户数据的泄露或其他安全问题。

    为了防止 CSRF 攻击,可以在涉及敏感操作的请求中使用 CSRF 令牌或其他验证机制来确保请求的合法性。

  3. 第三方 cookie 限制:某些浏览器(如 Chrome)实施了第三方 cookie 限制,这可能会影响通过localStoragesessionStorage与第三方域名进行数据共享。在这种情况下,第三方域名可能无法直接访问或修改存储在localStoragesessionStorage中的数据。

    如果你的应用涉及与第三方域名进行数据共享,可能需要考虑其他跨域数据共享的方式,如使用 CORS(跨域资源共享)或后端服务器进行数据传递。

总之,在使用localStoragesessionStorage时,要注意同源策略限制、CSRF 攻击的风险以及可能的第三方 cookie 限制。如果需要在不同源的页面之间共享数据或与第三方进行数据交互,可能需要使用其他跨域技术或后端解决方案来确保数据的安全和正确性。

六、总结

回顾 localStoragesessionStorage 的主要特点和应用场景

好的,以下是对localStoragesessionStorage的主要特点和应用场景的回顾:

  1. 主要特点:
  • localStorage
    • 持久性:存储的数据在浏览器关闭后仍然保留,除非手动清除。
    • 容量较大:通常可以存储几兆字节到几十兆字节的数据。
    • 跨窗口共享:同一域下的多个窗口或标签页可以共享localStorage数据。

在这里插入图片描述

  • sessionStorage
    • 会话持久性:存储的数据在当前会话期间有效,一旦浏览器关闭或会话结束,数据将被清除。
    • 容量较小:一般限制在几百千字节到几兆字节之间。
    • 仅在当前窗口或标签页中可用:不同窗口或标签页之间的sessionStorage数据是隔离的。

在这里插入图片描述

  1. 应用场景:
  • localStorage
    • 存储用户偏好设置、登录状态等需要长期保存的数据。
    • 缓存网页数据,减少服务器请求。
    • 实现离线应用功能,允许用户在离线状态下访问已缓存的数据。

在这里插入图片描述

  • sessionStorage
    • 存储临时数据,如购物车信息、表单填写数据等,用于在当前会话中保持状态。
    • 在页面之间传递数据,实现页面间的通信。
    • 存储会话相关的敏感数据,例如令牌或会话 ID。

在这里插入图片描述

总之,选择使用localStorage还是sessionStorage取决于你的数据存储需求。如果需要长期存储数据或在多个窗口之间共享数据,使用localStorage更为合适;如果只需要在当前会话中存储数据,使用sessionStorage即可。在使用时,要注意数据的大小限制、安全性以及可能遇到的跨域问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1314544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch的 8.x常用api汇总

ES的查询语法比较复杂,对于初学者需要在不断练习中才会逐渐掌握,本文汇总了ES各种查询语法以及常用api,可以作为新手的实用笔记 首先,安装 Kibana! 下载Elasticsearch,官方下载页面;Elasticsearch 参考,官方文档;<

智能优化算法应用:基于静电放电算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于静电放电算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于静电放电算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.静电放电算法4.实验参数设定5.算法结果6.…

目标检测图片截取目标分类图片

如果要训练一个分类模型却没有特定的分类数据集怎么办呢&#xff1f;可以换一种思路&#xff0c;将带有该目标的图片对所有想要的目标进行画标注框然后进行截图&#xff0c;就能得到特定的分类数据了。这么做的目的是&#xff1a;带有该目标的图片可能不会少&#xff0c;但是带…

【系统设计】如何确保消息不会丢失?

一、前言 对于大部分业务系统来说&#xff0c;丢消息意味着数据丢失&#xff0c;是完全无法接受的。其实&#xff0c;现在主流的消息队列产品都提供了非常完善的消息可靠性保证机制&#xff0c;完全可以做到在消息传递过程中&#xff0c;即使发生网络中断或者硬件故障&#xf…

Initial用法-FPGA入门3

Initial是什么 FPGA Initial是一种在FPGA中进行初始化的方法。在FPGA设备上&#xff0c;初始值决定了逻辑门的状态和寄存器的初始值。FPGA Initial可以通过设置初始值来控制电路在上电后的初始状态。 Initial的作用 2.1&#xff0c;控制电路启动时的初始状态 通过设置FPGA Ini…

迅为RK3568开发板使用OpenCV处理图像-ROI区域-位置提取ROI

在图像处理过程中&#xff0c;我们可能会对图像的某一个特定区域感兴趣&#xff0c;该区域被称为感兴趣区域&#xff08;Region of Interest, ROI&#xff09;。在设定感兴趣区域 ROI 后&#xff0c;就可以对该区域进行整体操作。 位置提取 ROI 本小节代码在配套资料“iTOP-3…

KVM虚拟机console使用

注意这些设置都在你要进入虚拟机里设置&#xff0c;不是在你的物理机设置 首先debian12 需要设置 grep ttyS0 /etc/securetty #没有则加上 echo ttyS0 >> /etc/securetty #启动 systemctl start serial-gettyttyS0 systemctl enable serial-gettyttyS0#CentOS Stream …

MIT18.06线性代数 笔记3

文章目录 对称矩阵及正定性复数矩阵和快速傅里叶变换正定矩阵和最小值相似矩阵和若尔当形奇异值分解线性变换及对应矩阵基变换和图像压缩单元检测3复习左右逆和伪逆期末复习 对称矩阵及正定性 特征值是实数特征向量垂直>标准正交 谱定理&#xff0c;主轴定理 为什么对称矩…

智能优化算法应用:基于供需算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于供需算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于供需算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.供需算法4.实验参数设定5.算法结果6.参考文献7.MA…

企业微信旧版-新版网络连接错误,无法登录的解决方案

一.企业微微信无法登录故障 二.解决方案 1.网上的解决方案 **检查网络连接&#xff1a;**确保你的计算机正常连接到互联网。尝试打开其他网页&#xff0c;以确保网络连接正常。 **防火墙和安全软件&#xff1a;**某些防火墙或安全软件可能会阻止企业微信的正常连接。请确保你…

CGAL的3D网格参数化

1、介绍 参数化曲面相当于找到一个从合适的域到曲面的单射映射。一个好的映射是在某种意义上最小化角度失真&#xff08;保角参数化&#xff09;或面积失真&#xff08;等面积参数化&#xff09;的映射。在这个包中&#xff0c;我们专注于参数化与圆盘或球体同胚的三角化曲面&a…

用CC三维建模建出的OSGB格式,用模方打不开,显示该路径包含OSGB瓦块数量0,是什么原因?

答&#xff1a;模方只识别tile命名的模型文件&#xff0c;此模型是不分块输出&#xff0c;要平面切块重新跑。 模方是一款针对实景三维模型的冗余碎片、水面残缺、道路不平、标牌破损、纹理拉伸模糊等共性问题研发的实景三维模型修复编辑软件。模方4.1新增自动单体化建模功能&…

Kubernetes 容器编排(2)

可视化部署 官方Dashboard 部署Dashboard # kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml # kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard # 注意将 type: ClusterIP 改为 type: NodePo…

每周一算法:树形动态规划

树形动态规划 树形动态规划一般用于处理求树上最优值的问题。大多数动态规划问题都是在一维二维这种规则的背景下的&#xff0c;可以解决的问题比较局限&#xff0c;而树作为一种特殊的图&#xff0c;可以描述比较复杂的关系&#xff0c;再加上树的递归定义&#xff0c;是一种…

Linux-CentOS7(无图形界面版)部署stable-diffusion-webui 全过程

Linux-CentOS7&#xff08;无图形界面版&#xff09;部署Stable Diffusion webui 全过程 前置要求 git的版本不能是CentOS默认的版本&#xff08;1.8&#xff09;&#xff0c;版本太老&#xff0c;在后面安装过程会失败。去github上下载最新的git源码包 安装成功显示版本号 …

用重建大师集群跑模型,在哪里可以设置联机?

答&#xff1a;工程路径、照片路径&#xff0c;引擎路径均设置为网络IP方式的路径&#xff0c;集群内的引擎都设置一样的路径就可以集群处理了。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件&#xff0c;输入倾斜照片&#xff0c;激光点云&#xff0c…

磁盘坏道扫描工具 Macrorit Disk Scanner v6.7.0 中文免费版 -供大家学习研究参考

非常方便实用的磁盘坏道修复软件。Wipe Bad Disk功能强大好用&#xff0c;通过特殊的算法来强制将硬盘的坏道删除清空格式化&#xff0c;从而拯救因产生坏道而不敢继续使用的硬盘!要注意的是经过这块软件清空的硬盘数据基本上是不能被恢复的&#xff0c;所以操作前请一定要备份…

【深度学习目标检测】七、基于深度学习的火灾烟雾识别(python,目标检测,yolov8)

YOLOv8是一种物体检测算法&#xff0c;是YOLO系列算法的最新版本。 YOLO&#xff08;You Only Look Once&#xff09;是一种实时物体检测算法&#xff0c;其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化&#xff0c;提高了检测速度和准确性。…

基于Nexus搭建Maven私服基础入门

什么是Nexus&#xff1f;它有什么优势&#xff1f; 要了解为什么需要nexus的存在&#xff0c;我们不妨从以下几个问题来简单了解一下: 为什么需要搭建私服&#xff1f;如果没有私服会出现什么问题&#xff1f; 对于企业开发而言&#xff0c;如果没有私服&#xff0c;我们所有…

uniGUI for Delphi UniSweetAlert控件详解

UniSweetAlert是UniGUI后期版本新增的一个界面友好的消息提示和输入控件&#xff0c;是ShowMessageN的升级版&#xff0c;UniSweetAlert增加了更多的可控制属性。 属性介绍 1、AlertType&#xff1a;提示类型&#xff0c;分为atError、atSuccess、atInfo、atQuestion、atWarni…