sessionStorage、localStorage、cookie你真的会用么

news2024/11/27 17:57:03

文章目录

  • 前言
    • 会话存储:
    • 本地存储:
  • 一、sessionStorage
    • 介绍
    • 使用演示
      • 存储数据到sessionStorage
      • 从sessionStorage中获取数据
      • 删除sessionStorage中的某个键值对
      • 清空sessionStorage中的所有数据
      • 从Chrome查看sessionStorage的存储情况
  • 二、localStorage
    • 介绍
    • 使用演示
      • 存储数据
      • 读取数据
      • 修改数据
      • 删除数据
      • 清除所有数据
      • 从Chrome查看localStorage的存储情况
  • 三、Cookie
    • 介绍
    • 使用演示
      • 设置Cookie
      • 读取Cookie
      • 删除Cookie
      • 使用场景
      • 从Chrome查看Cookie的存储情况
  • 四、三者的区别
  • 总结


前言

浏览器的存储通常分为两类:会话存储和本地存储。
在这里插入图片描述

会话存储:

会话存储指的是在用户打开浏览器窗口并访问网站时,浏览器会自动创建一个会话对象,会话对象会储存在浏览器内存中,当用户关闭浏览器或退出当前会话时,会话数据将被清除。 会话存储可以通过 JavaScript 中的 session Storage API 来实现,它可以方便地在不同页面和标签之间共享数据。

本地存储:

本地存储是指浏览器保存数据到本地硬盘或其他持久化存储设备中。浏览器可以使用 localStorage API 存储的数据永久存储在用户的计算机上,即使关闭浏览器窗口、退出会话或重启电脑,数据仍然存在。

本文今天将针对于sessionStoragelocalStoragecookie三种常见的浏览器存储做透彻的讲解。看之前先来个三联吧。


一、sessionStorage

介绍

sessionStorage,可以将数据存储于浏览器中的sessionStorage对象中,这些数据只在同一个浏览器窗口(或标签页)被创建并且加载了相同的页面时才被保留,不同的页面之间无法共享sessionStorage中的数据。

sessionStorage(或标签页)的生命周期内,关闭窗口后sessionStorage中存储的数据会被清除。
存储的数据仅限于字符串类型,即使存储的是数字、布尔值等其他类型的数据,也会被转换为字符串类型。
只能在客户端使用,无法通过服务端设置和获取。

使用演示

常见使用示例如下:

存储数据到sessionStorage

sessionStorage.setItem('name', '张三');

从sessionStorage中获取数据

var name = sessionStorage.getItem('name');
console.log(name); // 张三

删除sessionStorage中的某个键值对

sessionStorage.removeItem('name');

清空sessionStorage中的所有数据

sessionStorage.clear();

从Chrome查看sessionStorage的存储情况

在这里插入图片描述

二、localStorage

介绍

localStorage是HTML5提供的一种浏览器存储机制,可以在客户端本地保存键值对数据,并支持对数据进行读取、修改和删除等操作。
相比于传统的cookielocalStorage可以存储更多的数据量(通常为5-10MB),而且不会随HTTP请求被发送到服务器端,因此更为安全和高效。
localStorage的共享级别是域名级别的,可以跨页面使用。

使用演示

常见的localStorage使用包括了以下几个方面:

存储数据

可以使用localStorage.setItem()方法将键值对数据存储到localStorage中,例如:

localStorage.setItem('username','John');
localStorage.setItem('city','Beijing');

读取数据

可以使用localStorage.getItem()方法读取localStorage中的数据,例如:

var username = localStorage.getItem('username');
console.log(username); //输出:John

修改数据

可以使用localStorage.setItem()方法将相同键名的数据进行覆盖,从而实现修改数据的效果,例如:

localStorage.setItem('username','Alice');
var username = localStorage.getItem('username');
console.log(username); //输出:Alice

删除数据

可以使用localStorage.removeItem()方法将localStorage中指定键名的数据删除,例如:

localStorage.removeItem('city');
var city = localStorage.getItem('city');
console.log(city); //输出:null

清除所有数据

可以使用localStorage.clear()方法将localStorage中的所有数据清空,例如:

localStorage.clear();

需要注意的是,由于localStorage只能存储字符串类型的数据,因此如果需要存储其他类型的数据(如数组或对象),需要先将其转换为字符串类型,例如:

var arr = [1,2,3];
localStorage.setItem('myArray',JSON.stringify(arr));
var myArray = JSON.parse(localStorage.getItem('myArray'));
console.log(myArray); //输出:[1,2,3]

从Chrome查看localStorage的存储情况

在这里插入图片描述

三、Cookie

介绍

Cookie是一个小型的文本文件,存储在用户计算机上,用于识别用户和记录用户的偏好。当用户访问一个网站时,该网站会将Cookie存储在用户计算机上,并在随后的访问中读取Cookie,以便提供个性化的服务和体验。
由于Cookie每次请求都会从客户端带到服务器,所以Cookie数量不宜过多,占用空间不宜过大。一遍将一些重要数据,或者大部分页面都需要用到的数据放到Cookie上面。

使用演示

设置Cookie

document.cookie = "name=value; expires=date; path=path; domain=domain; secure"

读取Cookie

var cookieValue = document.cookie

删除Cookie

document.cookie = "name=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"

使用场景

常见的Cookie使用包括:

  • 登录状态维护:在用户登录时,服务器会生成一个唯一的Cookie,保存在用户计算机上。每次用户访问该网站时,浏览器会自动将该Cookie发送给服务器,以维护用户的登录状态。

  • 记住用户名和密码:在用户登录成功后,可以选择“记住用户名和密码”,此时浏览器会生成一个包含用户名和密码的Cookie,保存在用户计算机上。下次用户访问该网站时,浏览器会自动填写用户名和密码。

  • 购物车功能:在用户将商品加入购物车时,服务器会生成一个Cookie,保存在用户计算机上。当用户继续购物或结账时,浏览器会将购物车信息发送给服务器。

从Chrome查看Cookie的存储情况

在这里插入图片描述

四、三者的区别

特性sessionStoragelocalStoragecookie
存储大小5-10MB5-10MB4KB
生命周期会话级别永久取决于过期时间
与服务器通信不参与不参与每次请求都会发送
数据存储格式字符串字符串字符串或二进制数据
在同源窗口间共享可以可以只有在设置了相同的路径、域名和协议下才能共享
访问方式window.sessionStoragewindow.localStoragedocument.cookie

注:同源指的是协议、域名和端口号完全相同。

总结

在这里插入图片描述

以上就是本篇所讲解的内容,sessionStoragelocalStoragecookie你真的会用么,后面会分享更多有深度的前端内容,记得先点个关注不迷路。

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

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

相关文章

最新 Adobe Photoshop AI (Beta) 下载安装教程

Adobe最近推出了新的Adobe Photoshop AI(Beta),这是一款融合了生成性AI和Adobe Firefly的新功能。 能够根据用户的自然语言提示,创建出极其出色的图像。这些提示可以用来添加内容、删除或替换图像的某部分,甚至扩展图…

Flutter:动画

前言 学习参考:老孟 flutter动画 基本上开发时使用的组件都有其动画,关于动画方面的知识,一般情况很少会用到。因此这里只学习关于动画的基本知识。 AnimationController Flutter中的AnimationController是一个用于控制动画的类。它可以控…

深入理解Qt多线程编程:QThread、QTimer与QAudioOutput的内在联系__Qt 事件循环

深入理解Qt多线程编程:QThread、QTimer与QAudioOutput的内在联系__QObject的主线程的事件循环 1. Qt多线程编程的基础1.1 QObject和线程(QObject and Threads)1.2 QThread的使用和理解(Understanding and Using QThread&#xff0…

ubuntu下安装transition_amr_parser

ubuntu下安装transition_amr_parser transition_amr_parser是IBM公司开源的AMR paraing和AMR text-to-generation工具,在NLP领域中经常会用到,但是这个安装过程中可能会存在很多坑,transition_amr_parser的github主页安装教程不清晰&#xf…

探秘美颜SDK的动态贴纸的技术原理

美颜SDK作为美颜相机的重要组成部分,其动态贴纸技术也是很多用户喜爱的功能之一。本文将探秘美颜SDK的动态贴纸技术,从技术原理、应用场景和未来发展等方面进行分析。 一、技术原理 **1. 人脸识别技术。**在添加动态贴纸时,第一步要做的肯定…

图的导航 - 最短路径算法

一个 恋爱关系图 胡图图love:98于小美 胡图图love:48何壮壮 胡图图love:99小怪 于小美love:10张帅子 何壮壮love:45张帅子 小怪love:100张帅子 胡图图到张帅子的最短路径 确定不是恋爱路径? 算法实现 先看猛料再看是否实现思路 // 定义深度优先搜索状态 struct DepthFirs…

【Android】WMS(六)Surface的创建和操作

Surface的创建流程 在Android系统中每个Activity都有一个独立的画布(在应用侧称为Surface,在SurfaceFlinger侧称为Layer), 无论这个Activity安排了多么复杂的view结构,它们最终都是被画在了所属Activity的这块画布上。 1.Surfac…

618数码好物全推荐,几款科技感满满的数码好物分享

6月18日将迎来一年一度的618狂欢购物节,这可谓是一场精彩绝伦的购物盛宴。每年都有诸多品牌参与其中,我们不仅需要应对复杂的折扣,还需要面对眼花缭乱的产品,这让我们不可避免地陷入了“选择困难症”的困扰中。为了让大家在今年61…

【Android】手持设备规格参数

系列文章 【Android】手持设备规格参数 本文链接:https://blog.csdn.net/youcheng_ge/article/details/130604517 【H5】avalon前端数据双向绑定 本文链接:https://blog.csdn.net/youcheng_ge/article/details/131067187 【H5】安卓自动更新方案&…

天空卫士在中国数据安全软件市场位列前五

IDC-中国数据安全软件市场份额,2022 数字经济迅速崛起 中央网信办5月份发布的《数字中国发展报告(2022年)》显示,2022年,我国数字经济规模达50.2万亿元,总量稳居世界第二,同比名义增长10.3%,占国内生产总…

C#,码海拾贝(39)——求解“对称正定方程组”的“共轭梯度法”之C#源代码

using System; namespace Zhou.CSharp.Algorithm { /// <summary> /// 求解线性方程组的类 LEquations /// 原作 周长发 /// 改编 深度混淆 /// </summary> public static partial class LEquations { /// <summary> /…

vue3 script setup 获取父组件函数与参数方法

<script setup>真的可以说是一种非常方便的开发方式了 但没有直接性的setup 拿取父组件的参数和函数就会有点问题 其实vue官方给我提供了defineProps和defineEmits这两个方法是官方提供 不需要引入 直接用就好了 例如这里 我们给子组件传了三个参数 :imgSrc“user.images…

scrcpy 快捷键

可以使用键盘和鼠标在 scrcpy 窗口上执行操作 快捷方式。 在下面的列表中&#xff0c;是快捷方式修饰符。默认情况下&#xff0c;它是 &#xff08;左&#xff09;或&#xff08;左&#xff09;。MODAltSuper 可以使用 进行更改。可能的键是 、 、 和 。例如&#xff1a;–sh…

湖南大学OS-2019期末考试解析

【特别注意】 答案来源于wolf以及网络 是我在备考时自己做的&#xff0c;仅供参考&#xff0c;若有不同的地方欢迎讨论。 【试卷评析】 这张卷子有点老了&#xff0c;部分题目可能有用。如果仔细研究应该会有所收获。 【试卷与答案】 一、选择题&#xff08;15%&#xff…

6、JS-AJAX

6.3、AJAX 6.3.1、AJAX概述 传统的web交互是用户触发一个http请求服务器&#xff0c;然后服务器收到之后&#xff0c;在做出响应到用户&#xff0c;并且返回一个新的页面&#xff0c;每当服务器处理客户端提交的请求时&#xff0c;客户都只能空闲等待&#xff0c;并且哪怕只是…

制作一个电商数据可视化大屏无从下手?看这篇!

01 啥叫可视化大屏&#xff1f; 从字面意思就能看出来&#xff0c;可视化大屏就是有个大屏幕。可视化体现在里面的数据都成了图形和图标&#xff0c; 但是静止的图像也不能完全表现出多报表的结果&#xff0c;可视化大屏是将数据通过图形化、可视化的方式展现在大屏幕上的一种…

【深度学习】BERT变种—百度ERNIE 2.0

ERNIE 2.0 提出了一种持续学习的预训练框架&#xff1a;预训练使用了7种任务&#xff0c;而不是一两种简单的任务。不断引入新的预训练任务&#xff0c;让模型可以持续性地学习不同的预训练任务&#xff0c;并且不会遗忘先前学习的知识&#xff0c;以此让模型能够获得更为全面的…

让小白也能看懂,ChatGPT入门级科普“十问十答”

由于现在GPT火热&#xff0c;360老板已经开始总动员. 白领的日常工作肯定是要发生颠覆性变化的。下面我们就通过自问自答的方式带领小白用户了解一下ChatGPT. 1、ChatGPT到底是什么&#xff1f; ChatGPT 是一个由美国人工智能公司 OpenAI 开发的自然语言处理&#xff08;NLP&…

vue Electron ArcGis 桌面应用 Sqllite3 node-grp:老旧项目的起死回生

最近接收了一个三四年前做的项目。主要技术栈就是vue2electronsqllite3node-gyp。看到这个技术栈&#xff0c;基本可以知道感知这个项目的关键词&#xff1a;vue、Gis地图、本地数据库、桌面客户端。顿时深感亚历山大。 不多说&#xff0c;开干。 第一步&#xff0c;查看项目…

Qemu搭建ARM Vexpress开发环境

Qemu搭建ARM Vexpress开发环境 文章目录 Qemu搭建ARM Vexpress开发环境Qemu简介QEMU安装前的准备工作QEMU 安装的两种方式通过网络在线安装源码编译安装源码获取QEMU依赖库安装编译安装 命令选项qemu的标准选项qemu显示选项网络属性相关选项kvm的网络模型 Ubuntu 双网卡&#x…