html 浏览器存储方式

news2024/11/27 22:35:04

浏览器有三种本地存储方式:

1、localstorage
2、sessionStorage
3、cookie

浏览器 F12 打开调试模式,可以看到:
在这里插入图片描述
点击对应域名,可以看到当前域名下存储的数据,是以key,value形式存储的。

三种方式的共同点:

  • 都是保存在浏览器端
  • 仅同源可用的本地存储方式

localStorage

localStorage:用于持久化的本地存储,即使浏览器重启,甚至操作系统重启也不会丢失,并且存储的数据在同源(协议、域名、端口号一致)下的标签页和window窗口之间共享。

特点

  • 每个域名给 localStorage 分配的存储空间是5M
  • 只要在相同的协议,域名,端口下就能读取或修改同一份localStorage数据
  • 生命周期永久,除非用户手动清除浏览器中的localStorage信息,否则永远存储
  • 仅在浏览器中保存,不参与服务器通信

API:

localStorage.setItem("key","value");//以“key”为名称存储一个值“value”
localStorage.getItem("key");//获取名称为“key”的值
localStorage.removeItem("key");//删除名称为“key”的信息。
localStorage.clear();//清空localStorage中所有信息

sessionStorage

sessionStorage:存储一个会话的数据,页面刷新仍然有效,选项卡关闭时数据丢失。

特点

  • 仅在当前会话下有效,关闭页面或者浏览器后被清除
  • 每个域名给 sessionStorage 分配的存储空间是5M
  • 仅在浏览器中保存,不参与服务器通信
  • 可以接受原生接口,亦可以再次封装来对 ObjectArray 有更好的支持
  • sessionStorage除了相同的协议,域名,端口外,还要求在同一窗口下
  • sessionStorage是在同源的同窗口(或tab)中,始终存在的数据
  • 只要这个浏览器窗口没有关闭,即使刷新页面或进入同源另一页面,数据仍然存在。
  • 关闭窗口后,sessionStorage即被销毁。
  • 同时”独立”打开的不同窗口,即使是同一页面,sessionStorage对象也是不同的
  • 在相同标签页打开的多个iframe之间数据可以共享(同源的情况下)

API

sessionStorage.setItem("key","value");//以“key”为名称存储一个值“value”
sessionStorage.getItem("key");//获取名称为“key”的值
sessionStorage.removeItem("key");//删除名称为“key”的信息。
sessionStorage.clear();//清空sessionStorage中所有信息

localStorage与sessionStorage区别

我经常用到的存储方式为localStoragesessionStorage,因此需要清楚了解它们之间的区别:

  • localStoragesessionStorage的API调用方法相同
  • sessionStoragelocalStorage 不会自动把数据发给服务器,仅在本地保存
  • 不同浏览器无法共享localStoragesessionStorage中的信息
  • 相同浏览器的不同页面可以共享相同的localStorage(前提是页面属于相同域名和端口)
  • 相同浏览器的不同页面无法共享sessionStorage的信息

页面及标签页仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间可以共享sessionStorage
也就是说:在当前页面打开的链接和页面,可以访问sessionStorage的数据,在当前页面关联的src链接也可以获取到sessionStorage数据。

存储事件

每当Storage对象发生变化时,都会触发storage事件(增删改查)。

这个事件的时间对象有4个属性:

domain:存储变化对应的域
key:被设置或被删除的键
newValue:键被设置的新值,若被删除则为null
oldValue:键变化之前的值

注意:Storage类型只能存储字符串。非字符串数据在存储之前会自动转换为字符串,并且这种转换不能在获取数据时撤销。
也就是说:在获取storage数据时,拿到的一定是字符串,需要自己手动转换数据类型。

Cookie

特点

  • cookies是始于特定域名绑定的,设置之后,会和请求一起发送到服务器端。( 这个限制能够保证cookie中存储的信息只对被认可的接收者开放,不被其它域访问。)
  • cookie 是网站为了标示用户身份而储存在用户本地终端上的数据。(通常都是经过加密的)
  • cookie 数据始终在同源的http请求中携带(即使不需要),即会在浏览器和服务器间来回传递;
  • cookie 与服务器端通信,每次都会携带在HTTP头中,因此, cookie 存储数据过多会带来性能问题。

生命周期

在cookie设置的过期时间之前一直有效,即使窗口或者浏览器关闭;

限制

不超过300个cookie;
每个cookie不超过4096字节(4kb);
每个域不超过81920字节;
有存储个数限制(各浏览器不同),一般每个域不超过20个;

获取 cookie

document.cookie

以上代码会返回包含页面中所有有效cookie的字符串,以分号分隔。
所有名称和值都是URL编码,所以必须使用decodeURIComponent()解码。

设置 cookie

name=value; expires=expiration_time; path=domain_path; domain=domain_namel secure
//在所有这些参数中,只有cookie的名称和值是必须的

document.cookie = `${encodeURIComponent('name')}=${encodeURIComponent('nanjiu')};domain=bettersong.github.io;`

删除cookie

cookie 的删除没有直接方法,可以通过设置其过期时间,从而达到删除效果。

示例:

document.cookie = 'uid=dkfywqkrhkwehf23;expires=' + new Date(0) + ';path=/;secure;

应用场景:

用vue做的后台管理平台,允许打开多个页面,不同页面可登陆不同的用户,用户之间互不干扰。
如果使用localStorage,因为相同域名和端口,会导致不同页面数据共享,从而引发混乱。如果采用sessionStorage,不同页面即可保证互不干扰,且vue为SPA,无需打开新的页面,因此不会相互干扰。

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

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

相关文章

某程序员去华为面试,因为错了一道题而被淘汰

题目有一道数学的逻辑题,这种提一般智商测试或者公务员考试中经常见到,传说华为有道面试题是这样的,求出下划线的数字应该是多少?请准备好纸和笔,思考10分钟,看看你能否得出正确答案。1分钟后。。。2分钟后…

MySQl学习(从入门到精通11)

MySQl学习(从入门到精通11)第 14 章_视图1. 常见的数据库对象2. 视图概述2. 1 为什么使用视图?2. 2 视图的理解3. 创建视图3. 1 创建单表视图3. 2 创建多表联合视图3. 3 基于视图创建视图4. 查看视图5. 更新视图的数据5. 1 一般情况5. 2 不可…

餐饮企业数据可视化大屏(智慧餐饮)

随着信息技术的深入发展,数据大屏的适用场景日益广泛,集工作汇报、实时监控和预测分析等功能于一身。 数据可视化的本质是视觉对话,数据可视化将数据分析技术与图形技术结合,清晰有效地将分析结果信息进行解读和传达。 当前很多餐…

第八天字符串

344.反转字符串力扣题目链接(opens new window)编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中…

数据结构|绪论

🔥Go for it!🔥 📝个人主页:按键难防 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 📖系列专栏:数据结构与算法 &#x1f52…

基于STM32设计的音乐播放器

一、项目背景与设计思路 1.1 项目背景 时代进步,科学技术的不断创新,促进电子产品的不断更迭换代,各种新功能和新技术的电子产品牵引着消费者的眼球。人们生活水平的逐渐提高,对娱乐消费市场需求日益扩大,而其消费电子产品在市场中的占有份额越来越举足轻重。目前消费电…

FPGA纯verilog代码读写N25Q128A QSPI Flash 提供工程源码和技术支持

目录1、N25Q128A芯片解读2、N25Q128A读写时序3、整体设计思路架构4、verilog读写Flash驱动设计5、verilog读写Flash控制器设计6、FIFO缓存设计7、串口输出Flash读取数据8、vivado工程介绍9、上板调试验证并演示10、福利:工程源码获取1、N25Q128A芯片解读 N25Q128A的…

一篇文章学懂C++和指针与链表

指针 目录 指针 C的指针学习 指针的基本概念 指针变量的定义和使用 指针的所占的内存空间 空指针和野指针 const修饰指针 指针和数组 指针和函数 指针、数组、函数 接下来让我们开始进入学习吧! C的指针学习 指针的基本概念 指针的作用:可…

K8S集群管理平台Rancher(2):安装与使用

Rancher 是一个容器管理平台。Rancher 简化了使用 Kubernetes 的流程。 下面记录一下手动安装Rancher的步骤 一、docker安装rancher 拉取rancher镜像 docker pull rancher/rancher运行rancher容器 sudo docker run -d --restartalways \ -v /mydata/docker/rancher_data…

基于Apache Maven构建多模块项目

title: 基于Apache Maven构建多模块项目 date: 2022-04-10 00:00:00 tags: Apache Maven多模块 categories:Maven 介绍 多模块项目由管理一组子模块的聚合器 POM 来构建。在大多数情况下聚合器位于项目的根目录中,并且必须是 pom 类型的项目。子模块是常规的 Mave…

excel数据整理:合并计算快速查看人员变动

相信大家平时在整理数据时,都会对比数据是否有重复的地方,或者该数据与源数据相比是否有增加或者减少。数据量不大还好,数据量大的话,对比就比较费劲了。接下来我们将进入数据对比系列课程的学习。该系列一共有两篇教程&#xff0…

ESP8266 + STC15+ I2C OLED带网络校时功能的定时器时钟

ESP8266 + STC15+ I2C OLED带网络校时功能的定时器时钟 📍相关篇《ESP8266 + STC15基于AT指令通过TCP通讯协议获取时间》 📌ESP8266 AT固件基于安信可AT固件,相关刷AT固件可以参考《NodeMCU-刷写AT固件》 🔖STC15 单片机采用的是:STC15F2K60S2 晶振频率采用内部:22.11…

Java面试——多线程并发篇

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

滑动窗口算法

滑动窗口 滑动窗口有俩种:定窗口和不定窗口。滑动窗口说白了就是双指针的运用。 定窗口说明是一个特定窗口大小,通常用来解决相邻的元素,最大值,最小值。 不定窗口说的是,先由右指针去找到第一个能够符合题意的位置…

【微信小程序】在WXML文件中显示JS文件中全局变量的方法

前言我们知道在wxml中可以通过数据绑定的方法来获取到js文件中data里面的数据,并且显示到wxml界面,那么我们该如何在wxml中显示js文件里面的全局变量呢?显示data里面数据的方法在wxml种我们可以显示js代码中data代码段中的变量。具体的操作是…

《跃迁:从技术到管理的硅谷路径》读后感

一、技术管理 1.技术管理包含两层含义: 一层是管理自己和团队的技术,进行技术选型,在正确的场景使用最适合的技术,保证程序简捷、强壮、可维护,最终完成产品的上线另一层是管理技术团队,帮助团队成员成长…

【面试题】2023 vue高频面试知识点汇总

一、MVVM原理在Vue2官方文档中没有找到Vue是MVVM的直接证据,但文档有提到:虽然没有完全遵循MVVM模型,但是 Vue 的设计也受到了它的启发,因此在文档中经常会使用vm(ViewModel 的缩写) 这个变量名表示 Vue 实例。为了感受MVVM模型的…

十二款硬盘数据恢复软件!恢复数据,最适合你的是这一款

硬盘数据发生丢失,通过快捷键、回收站、备份都无法恢复回来。对于电脑小白来说,最好的方法就是通过专业软件恢复数据。市面上很多硬盘数据恢复软件,我们大多不清楚它们有哪些功能,好不好用。 为此,我尝试了十二款数据…

雪花算法snowflake

snowflake中文的意思是 雪花,雪片,所以翻译成雪花算法。它最早是twitter内部使用的分布式环境下的唯一ID生成算法。在2014年开源。雪花算法产生的背景当然是twitter高并发环境下对唯一ID生成的需求,得益于twitter内部高超的技术,雪…

【从头开始】Java基础Day05

面向对象、三大特性、异常处理Day05面向对象构造器创建对象内存分析封装继承Super关键字重写多态instanceofStatic详解抽象类接口异常ErrorExceptionError和Exception的区别异常处理机制自定义异常类实际应用中关于异常的总结Day05 面向对象 面向对象编程的本质就是&#xff1…