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

news2024/11/17 22:35:21

在这里插入图片描述

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

文章目录

  • 一、引言
    • 介绍 Web 存储的概念和作用
  • 二、 `localStorage` 和 `sessionStorage` 的基础知识
    • 解释 `localStorage` 和 `sessionStorage` 的定义和区别
    • 演示如何在浏览器中访问和使用 `localStorage` 和 `sessionStorage`
  • 三、 `localStorage` 的使用场景和示例
    • 探讨 `localStorage` 在保存用户偏好设置、缓存数据等方面的应用
    • 提供一个使用 `localStorage` 保存网页字体样式的示例

一、引言

介绍 Web 存储的概念和作用

Web 存储是一种在浏览器中存储数据的技术,它允许网站将数据存储在用户的浏览器中,以便在后续的访问中使用。Web 存储通常分为两种类型:

  • 本地存储
  • 会话存储

本地存储是指将数据存储在用户的计算机上,即使浏览器关闭后数据仍然存在。这使得网站能够在用户下次访问时更快地加载数据,并且可以记住用户的偏好设置和登录状态等信息。本地存储通常使用 HTML5 的localStoragesessionStorage属性来实现。

会话存储是指将数据存储在浏览器的会话中,当浏览器关闭时数据会被清除。会话存储通常用于存储临时数据,例如购物车中的物品或用户在表单中输入的数据。会话存储通常使用 HTML5 的sessionStorage属性来实现。

Web 存储的作用包括:

  • 提高网站的性能:通过将数据存储在本地或会话中,网站可以更快地加载数据,减少了对服务器的请求次数。
  • 改善用户体验:Web 存储可以记住用户的偏好设置和登录状态等信息,使用户在下次访问时能够更快地进入网站。
  • 存储离线数据:Web 存储可以将数据存储在本地,使得用户即使在没有网络连接的情况下也能够访问网站的数据。
  • 减少服务器负载:通过将一些数据存储在本地或会话中,网站可以减少对服务器的请求次数,从而减轻服务器的负载。

在这里插入图片描述

需要注意的是,Web 存储的数据只能被存储数据的网站访问,并且用户可以随时清除存储的数据。因此,网站应该谨慎地使用 Web 存储,并确保遵守相关的隐私政策和法规。

二、 localStoragesessionStorage 的基础知识

解释 localStoragesessionStorage 的定义和区别

localStoragesessionStorage是 HTML5 提供的两种在浏览器中存储数据的方式。

  • localStorage用于将数据存储在本地计算机上,即使关闭浏览器窗口或浏览器会话,数据仍然存在。localStorage的数据可以在同一域名下的不同页面之间共享。

  • sessionStorage也用于在浏览器中存储数据,但与localStorage不同的是,sessionStorage的数据仅在当前会话期间有效。一旦用户关闭浏览器窗口或浏览器会话,sessionStorage中的数据将被删除。

下面是localStoragesessionStorage之间的一些区别:

  • 生命周期:localStorage的数据在浏览器中持续存在,直到用户明确删除或清除浏览器缓存。sessionStorage的数据仅在当前会话期间有效,会话结束后数据将被删除。

  • 作用域:localStorage的数据可以在同一域名下的不同页面之间共享。而sessionStorage的数据仅在当前页面中可用。

  • 存储大小限制:localStoragesessionStorage都有一定的存储大小限制。具体的限制大小可能因浏览器而异,但通常localStorage的限制较大,而sessionStorage的限制较小。

  • 应用场景:localStorage适用于长期存储用户偏好设置、缓存数据等。sessionStorage适用于在会话期间临时存储数据,如购物车中的物品、登录状态等。

在这里插入图片描述

总而言之,选择使用localStorage还是sessionStorage取决于你的数据存储需求。如果你需要长期保存数据并在不同页面之间共享,使用localStorage更为合适。如果你只需要在当前会话期间存储数据,使用sessionStorage即可。

演示如何在浏览器中访问和使用 localStoragesessionStorage

以下是使用 JavaScript 在浏览器中访问和使用 localStoragesessionStorage 的示例:

  1. localStorage

    • 访问:可以通过 window.localStorage 对象来访问 localStorage

    • 存储数据:可以使用 setItem() 方法来存储数据,语法为 localStorage.setItem(key, value),其中 key 是数据的键,value 是要存储的数据。

    • 获取数据:可以使用 getItem() 方法来获取数据,语法为 localStorage.getItem(key),其中 key 是要获取数据的键。

    • 删除数据:可以使用 removeItem() 方法来删除数据,语法为 localStorage.removeItem(key),其中 key 是要删除数据的键。

    • 清空所有数据:可以使用 clear() 方法来清空所有数据,语法为 localStorage.clear()

    示例代码:

    // 存储数据
    localStorage.setItem('myData', 'Hello, World!');
    
    // 获取数据
    var data = localStorage.getItem('myData');
    
    // 输出:Hello, World!
    console.log(data); 
    
    // 删除数据
    localStorage.removeItem('myData');
    
    // 清空所有数据
    localStorage.clear();
    
  2. sessionStorage

    • 访问:可以通过 window.sessionStorage 对象来访问 sessionStorage

    • 存储数据、获取数据、删除数据和清空所有数据的方法与 localStorage 相同,只是使用的对象不同。

    示例代码:

    // 存储数据
    sessionStorage.setItem('myData', 'Hello, World!');
    
    // 获取数据
    var data = sessionStorage.getItem('myData');
    
    // 输出:Hello, World!
    console.log(data); 
    
    // 删除数据
    sessionStorage.removeItem('myData');
    
    // 清空所有数据
    sessionStorage.clear();
    

在上述示例中,我们演示了如何使用 localStoragesessionStorage 来存储、获取、删除数据以及清空所有数据。你可以根据需要替换 keyvalue 来存储和获取自定义的数据。

三、 localStorage 的使用场景和示例

探讨 localStorage 在保存用户偏好设置、缓存数据等方面的应用

localStorage在保存用户偏好设置、缓存数据等方面有广泛的应用。下面是一些常见的使用场景:

  1. 用户偏好设置:通过localStorage,可以存储用户的偏好设置,例如语言偏好、主题样式、页面布局等。当用户下次访问该网站时,网站可以自动读取localStorage中的设置,并根据用户的偏好进行个性化展示。

  2. 缓存数据localStorage可以用来缓存一些数据,以减少服务器请求和提高页面加载速度。例如,可以将一些常用的静态资源(如图像、CSS 文件、JavaScript 文件等)存储在localStorage中,当用户再次访问该页面时,直接从localStorage中读取缓存的数据,而无需再次从服务器下载。

  3. 登录状态:可以使用localStorage来存储用户的登录状态信息,以便在用户下次访问时自动登录。例如,将用户的登录凭据存储在localStorage中,当用户打开页面时,检查localStorage中是否存在登录凭据,如果存在,则自动登录用户。

  4. 购物车:在电子商务网站中,可以使用localStorage来存储用户的购物车信息。当用户添加或删除商品时,更新localStorage中的购物车数据。这样,即使用户关闭浏览器或切换设备,购物车中的商品信息仍然可以被保留。

需要注意的是,localStorage的数据是存储在用户的浏览器中,并且受到浏览器的限制。每个浏览器通常都有自己的存储容量限制,并且localStorage的数据在浏览器关闭后仍然可以保留。因此,在使用localStorage时,需要考虑数据的安全性和隐私问题,不要存储敏感数据或大量数据。

总之,localStorage提供了一种在浏览器中存储数据的简便方式,可以用于改善用户体验、提高网站性能以及实现一些基本的客户端功能。

提供一个使用 localStorage 保存网页字体样式的示例

以下是一个使用 localStorage 来保存网页字体样式的简单示例:

// 获取或设置存储的字体样式
function getFontStyle() {
  return localStorage.getItem('fontStyle') || 'default';
}

function setFontStyle(style) {
  localStorage.setItem('fontStyle', style);
}

// 监听字体样式的变化,并更新页面样式
document.addEventListener('change', function (event) {
  if (event.target.matches('input[type="radio"]')) {
    setFontStyle(event.target.value);
    document.documentElement.style.fontFamily = getFontStyle();
  }
});

// 在页面加载时,从 localStorage 中获取字体样式,并应用到页面上
document.addEventListener('DOMContentLoaded', function () {
  document.documentElement.style.fontFamily = getFontStyle();
});

在这个示例中,我们使用 localStorage 来存储字体样式,键为 fontStyle。通过 getItem() 方法获取存储的字体样式,或者使用 setItem() 方法设置存储的字体样式。

我们还添加了一个 change 事件监听器,当用户在字体样式选择框中选择字体样式时,会触发该事件。在事件处理函数中,我们更新 localStorage 中的字体样式,并将其应用到页面的字体样式上。

最后,我们在页面加载完成时,通过 DOMContentLoaded 事件监听器,将从 localStorage 中获取的字体样式应用到页面上。

你可以将这个示例嵌入到你的网页中,并根据需要进行调整。这样,用户可以在浏览器中选择他们喜欢的字体样式,并在下次访问时保持其选择。

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

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

相关文章

《使用ThinkPHP6开发项目》 - ThinkPHP6使用使用中间件验证登录Token

https://blog.csdn.net/centaury32/article/details/134997438 按照https://blog.csdn.net/centaury32/article/details/134999029的方法验证登录Token,那么每一步都需要写同样一段代码,这里可以结合中间件进行验证 一、创建中间件:php thi…

华为配置VRRP负载分担示例

组网需求 如图1所示,HostA和HostC通过Switch双归属到SwitchA和SwitchB。为减轻SwitchA上数据流量的承载压力,HostA以SwitchA为默认网关接入Internet,SwitchB作为备份网关;HostC以SwitchB为默认网关接入Internet,Switc…

【深度学习】机器学习概述(二)优化算法之梯度下降法(批量BGD、随机SGD、小批量)

​ 文章目录 一、基本概念二、机器学习的三要素1. 模型a. 线性模型b. 非线性模型 2. 学习准则a. 损失函数b. 风险最小化准则 3. 优化机器学习问题转化成为一个最优化问题a. 参数与超参数b. 梯度下降法梯度下降法的迭代公式具体的参数更新公式学习率的选择 c. 随机梯度下降批量…

[Linux] Tomcat部署和优化

一、Tomcat相关知识 1.1 Tomcat的简介 Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件基金会的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。 …

环境搭建及源码运行_java环境搭建_maven

1、介绍 1)管理项目依赖和版本 统一的项目依赖和版本管理 2)Maven支持多模块项目管理 通过定义父子模块的关系来管理多个子模块的构建和依赖关系。使用Maven可以实现多模块项目的统一管理和构建,从而提高项目的可维护性和可重用性。 3&#x…

【️Zookeeper是CP还是AP的?】

😊引言 🎖️本篇博文约3000字,阅读大约10分钟,亲爱的读者,如果本博文对您有帮助,欢迎点赞关注!😊😊😊 🖥️Zookeeper是CP还是AP的? ✅…

Docker及其使用思维导图

Docker的架构 构建分发运行镜像 Client(客户端):是Docker的用户端,可以接受用户命令和配置标识,并与Docker daemon通信。Images(镜像):是一个只读模板,含创建Docker容器…

Sui第八轮资助:七个项目获得资助

今天,Sui基金会宣布本月的资助获得者,他们因构建项目以推动Sui的采用和发展而获得资助。要获得资助,项目必须提交提案,详细说明他们正在构建的内容、预算明细、关键里程碑、团队经验以及对Sui社区的预期贡献。 以下七个项目致力于…

ACT、NAT、NATPT和EASY-IP

目录 一、ACL 1.ACL 2.ACL的两种应用匹配机制 3.ACL的基本类型 4.ACL命令操作 5.ACL实验: 4.ACL的应用原则: 5.匹配原则: 二、NAT 1.NAT的原理及作用: 2.NAT分类 3.NAT配置 三、EASY-ip实验 四、NATPT 五、通配符 …

解决el-table组件中,分页后数据的勾选、回显问题?

问题描述: 1、记录一个弹窗点击确定按钮后,table列表所有勾选的数据信息2、再次打开弹窗,回显勾选所有保存的数据信息3、遇到的bug:切换分页,其他页面勾选的数据丢失;点击确认只保存当前页的数据&#xff1…

spring boot集成mybatis和springsecurity实现登录认证功能

参考了很多网上优秀的教程,结合自己的理解,实现了登录认证功能,不打算把理论搬过来,直接上代码可能入门更快,文中说明都是基于我自己的理解写的,可能存在表述或者解释不对的情况,如果需要理论支…

linux内核使用ppm图片开机

什么是ppm图片 PPM(Portable Pixmap)是一种用于存储图像的文件格式。PPM图像文件以二进制或ASCII文本形式存储,并且是一种简单的、可移植的图像格式。PPM格式最初由Jef Poskanzer于1986年创建,并经过了多次扩展和修改。 PPM图像…

金蝶云星空协同开发环境应用内执行单据类型脚本

文章目录 金蝶云星空协同开发环境应用内执行单据类型脚本业务界面查询单据类型表数据导出数据执行数据库脚本单据类型xml检验是否执行成功检查数据库检查业务数据 金蝶云星空协同开发环境应用内执行单据类型脚本 业务界面 查询单据类型表数据 先使用类型中文在单据类型多语言…

Windows10之wsl-Linux子系统安装JDK、Maven环境

Windows10之wsl-Linux子系统安装JDK、Maven环境 文章目录 1.环境2.安装2.1安装JDK2.1安装maven 3.配置setting.xml4.下载编译项目插件5.总结 1.环境 首先需要在windwos10上安装wsl的Linux子系统,我选择的是CentOs的操作系统的镜像(之前的文章中采用的是docker拉取一…

嵌入式开发人员需要具备哪些能力?

大家好,今天给大家介绍嵌入式开发人员需要具备哪些能力,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 嵌入式开发人员需要具备以下能力: 熟练掌握C/C语…

腾讯云Linux云服务器禁Ping设置

腾讯云Linux服务器默认是允许ping包的,但是在一些情况下为了安全考虑起见,我们都会把服务器设置为禁ping的模式。 1、首先检查Linux服务器当前是否禁ping 执行命令: cat /proc/sys/net/ipv4/icmp_echo_ignore_all 备注: 0----代…

Android画布Canvas绘图scale translate,Kotlin

Android画布Canvas绘图scale & translate&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"…

maven jar sort

1&#xff09;往常项目结构lib包排序 2&#xff09;maven的默认是没有排序的

2019年第八届数学建模国际赛小美赛A题放射性产生的热量解题全过程文档及程序

2019年第八届数学建模国际赛小美赛 A题 放射性产生的热量 原题再现&#xff1a; 假设我们把一块半衰期很长的放射性物质做成一个特定的形状。在这种材料中&#xff0c;原子核在衰变时会以随机的方向释放质子。我们假设携带质子的能量是一个常数。质子在穿过致密物质时&#x…

【STM32】STM32学习笔记-OLED调试工具(09)

00. 目录 文章目录 00. 目录01. STM32调试方式02. OLED简介03. 0.96寸OLED模块04. 0.96寸OLED驱动IC05. 0.96寸OLED原理图06. 硬件电路07. OLED驱动函数08. 附录 01. STM32调试方式 串口调试&#xff1a;通过串口通信&#xff0c;将调试信息发送到电脑端&#xff0c;电脑使用串…