浏览器原理---浏览器本地存储

1、浏览器本地存储方式及使用场景

        (1)Cookie

        Cookie是最早被提出来的本地存储方式,在此之前,服务端是无法判断网络中的两个请求是否是同一用户发起的,为解决这个问题,Cookie就出现了。Cookie的大小只有4kb,它是一种纯文本文件,每次发起HTTP请求都会携带Cookie。

        Cookie的特性:

                a、一旦创建成功,名称就无法修改

                b、Cookie无法跨域

                c、每个域名下的Cookie数量不鞥超过20个,每个Cookie的大小不能超过4kb

                d、Cookie在请求一个新的页面的时候都会被发送

                e、cookie存在安全问题

        如果需要域名之间跨域共享Cookie,有两种方法:使用Nginx反向代理、在一个站点登陆之后,往其他网站写Cookie。

        (2)LocalStorage

        LocalStorage是HTML5新引入的特性,由于有的时候我们存储的信息较大,Cookie就不能满足我们的需求。

        LocalStorage的优点:

                a、LocalStorage的大小一般为5MB,可以储存更多的信息

                b、LocalStorage是持久存储,除非主动清理,不然会永久存在

                c、仅存储在本地

        LocalStorage的缺点:        

                a、IE8以下不支持LocalStorage

                b、浏览器设置为隐私模式,无法读取到LocalStorage

                c、受同源策略限制

        LocalStorage常用API

// 保存数据到 localStorage
localStorage.setItem('key', 'value');// 从 localStorage 获取数据
let data = localStorage.getItem('key');// 从 localStorage 删除保存的数据
localStorage.removeItem('key');// 从 localStorage 删除所有保存的数据
localStorage.clear();// 获取某个索引的Key
localStorage.key(index)

        (3)SessionStorage

        SessionStorage和LocalStorage都是在HTML5才提出来的存储方案,SessionStorage 主要用于临时保存同一窗口(或标签页)的数据,刷新页面时不会删除,关闭窗口或标签页之后将会删除这些数据。 

        SessionStorage受同源策略限制,且只有在同一浏览器的同一窗口下才能共享。和LocalStorage一样,不能被爬虫获取。

        SessionStorage的常用API

// 保存数据到 sessionStorage
sessionStorage.setItem('key', 'value');// 从 sessionStorage 获取数据
let data = sessionStorage.getItem('key');// 从 sessionStorage 删除保存的数据
sessionStorage.removeItem('key');// 从 sessionStorage 删除所有保存的数据
sessionStorage.clear();// 获取某个索引的Key
sessionStorage.key(index)

2、Cookie有哪些字段及作用

  • Name:cookie的名称
  • Value:cookie的值,对于认证cookie,value值包括web服务器所提供的访问令牌;
  • Size: cookie的大小
  • Path:可以访问此cookie的页面路径。
  • Secure: 指定是否使用HTTPS安全协议发送Cookie。
  • Domain:可以访问该cookie的域名
  • HTTP: 该字段包含HTTPOnly属性 ,该属性用来设置cookie能否通过脚本来访问,默认为空,即可以通过脚本访问。
  • Expires/Max-size: 此cookie的超时时间。若设置其值为一个时间,那么当到达此时间后,此cookie失效。不设置的话默认值是Session,意思是cookie会和session一起失效。当浏览器关闭(不是浏览器标签页,而是整个浏览器) 后,此cookie失效

        简单来说,服务器端可以使用 Set-Cookie 的响应头部来配置 cookie 信息。一条cookie 包括了5个属性值 expires、domain、path、secure、HttpOnly。其中 expires 指定了 cookie 失效的时间,domain 是域名、path是路径,domain 和 path 一起限制了 cookie 能够被哪些 url 访问。secure 规定了 cookie 只能在确保安全的情况下传输,HttpOnly 规定了这个 cookie 只能被服务器访问,不能使用 js 脚本访问。

3、Cookie、LocalStorage、SessionStorage的区别

        Cookie:是服务器端用于记录用户状态的一种方式,由服务器设置,在客户端存储,然后每次发起同源请求时,发送给服务器端。cookie 最多能存储 4 k 数据,它的生存时间由 expires 属性指定,并且 cookie 只能被同源的页面访问共享。

        LocalStorage:html5 提供的一种浏览器本地存储的方法,它一般也能够存储 5M 或者更大的数据。它和 sessionStorage 不同的是,除非手动删除它,否则它不会失效,并且 localStorage 也只能被同源页面所访问共享。

        SessionStorage:html5 提供的一种浏览器本地存储的方法,它借鉴了服务器端 session 的概念,代表的是一次会话中所保存的数据。它一般能够存储 5M 或者更大的数据,它在当前窗口关闭后就失效了,并且 sessionStorage 只能被同一个窗口的同源页面所访问共享。

        当需要在本地存储大量数据的时候,我们可以使用浏览器的 indexDB 这是浏览器提供的一种本地的数据库存储机制。

4、前端储存方式

  • cookies: 在HTML5标准前本地储存的主要⽅式,优点是兼容性好,请求头⾃带cookie⽅便,缺点是⼤⼩只有4k,⾃动请求头加⼊cookie浪费流量,每个domain限制20个cookie,使⽤起来麻烦,需要⾃⾏封装;
  • localStorage:HTML5加⼊的以键值对(Key-Value)为标准的⽅式,优点是操作⽅便,永久性储存(除⾮⼿动删除),⼤⼩为5M,兼容IE8+ ;
  • sessionStorage:与localStorage基本类似,区别是sessionStorage当⻚⾯关闭后会被清理,⽽且与cookie、localStorage不同,他不能在所有同源窗⼝中共享,是会话级别的储存⽅式;
  • Web SQL:2010年被W3C废弃的本地数据库数据存储⽅案,但是主流浏览器(⽕狐除外)都已经有了相关的实现,web sql类似于SQLite,是真正意义上的关系型数据库,⽤sql进⾏操作,当我们⽤JavaScript时要进⾏转换,较为繁琐;
  • IndexedDB: 是被正式纳⼊HTML5标准的数据库储存⽅案,它是NoSQL数据库,⽤键值对进⾏储存,可以进⾏快速读取操作,⾮常适合web场景,同时⽤JavaScript进⾏操作会⾮常便。

5、IndexedDB的特点

  • 键值对储存:IndexedDB 内部采用对象仓库(object store)存放数据。所有类型的数据都可以直接存入,包括 JavaScript 对象。对象仓库中,数据以"键值对"的形式保存,每一个数据记录都有对应的主键,主键是独一无二的,不能有重复,否则会抛出一个错误。
  • 异步:IndexedDB 操作时不会锁死浏览器,用户依然可以进行其他操作,这与 LocalStorage 形成对比,后者的操作是同步的。异步设计是为了防止大量数据的读写,拖慢网页的表现。
  • 支持事务:IndexedDB 支持事务(transaction),这意味着一系列操作步骤之中,只要有一步失败,整个事务就都取消,数据库回滚到事务发生之前的状态,不存在只改写一部分数据的情况。
  • **同源限制:**IndexedDB 受到同源限制,每一个数据库对应创建它的域名。网页只能访问自身域名下的数据库,而不能访问跨域的数据库。
  • 储存空间大:IndexedDB 的储存空间比 LocalStorage 大得多,一般来说不少于 250MB,甚至没有上限。
  • 支持二进制储存:IndexedDB 不仅可以储存字符串,还可以储存二进制数据(ArrayBuffer 对象和 Blob 对象)。

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

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

相关文章

深入OceanBase分布式数据库:MySQL 模式下的 SQL 基本操作

码到三十五 : 个人主页 OceanBase与MySQL模式下兼容性序 在当今的大数据时代,数据库技术的选择对于企业的信息化发展至关重要。OceanBase作为一种高性能、高可用的分布式关系数据库,在与MySQL模式的兼容性方面展现出了显著的优势&#xff0c…

【SpringBoot】数据脱敏

文章目录 什么是数据脱敏JsonSerialize自定义Jackson注解定制脱敏策略定制JSON序列化实现脱敏工具类 定义Person类,对其数据脱敏模拟接口测试总结 什么是数据脱敏 数据脱敏,也称为数据的去隐私化或数据变形,是一种技术手段,用于对…

vue各种时间类型转换

时间范围[2024-04-17 14:36:27, 2024-04-24 14:36:27] console.log(this.$getRecentDays()); 页面使用默认7天 也可以指定console.log(this.$getRecentDays(30)); [2024-04-17 14:36:27, 2024-04-24 14:36:27] 默认值 function getDateString (date, fmt yyyy-MM-dd) {if…

【问题实操】银河高级服务器操作系统实例分享,配置hugepages启动异常

1.问题现象 某运营商国产服务器操作系统项目,部署Kylin-Server-0524-aarch64服务器系统,内核从4.19.90-24.4升级到4.19.90-25.14。在grub中配置huagepages大页内存后,系统在内核启动阶段黑屏,只显示一个光标。grub配置如下图&…

Vue3框架

Vue3框架 一.使用create-vue搭建Vue3项目二.组合式API - setup选项1.setup选项的写法和执行时机2.setup中写代码的特点3. script setup 语法糖 三.组合式API - reactive和ref函数1. reactive2. ref3. reactive 对比 ref 四.组合式API - computed五.组合式API - watch1. 侦听单个…

Gone框架介绍3 - 使用gone命令,自动生成Priest函数

文章目录 1. 安装辅助工具: gone2. 创建一个名为gen-code的新项目3. 创建Goner4. 使用辅助工具5. 添加main函数 我在两年前实现了一个Golang的依赖注入框架,并且集成了gin、xorm、redis、cron、消息中间件等功能,自己觉得还挺好用的;之前一直…

Linux Mint 21.3 “Virginia“ 简介

Linux Mint 21.3 "Virginia" 是Linux Mint项目发布的最新版本,这个版本基于Ubuntu 22.04 LTS(Jammy Jellyfish),并提供了三个主要的桌面环境:Cinnamon、MATE和Xfce。每个桌面环境都有其独特的特点和优势&…

Unity射击游戏开发教程:(8)构建 UI 元素:添加分数显示

用户界面决定用户如何与屏幕交互。UI 适用于所有类型的游戏和应用程序,在此示例中,我们将为我的太空射击游戏设置一个简单的记分板。 第一步是在层次结构中创建一个 UI 元素。只需在层次结构中右键单击,滚动 UI 并选择要添加的 UI 元素类型。在本例中,我们将使用文本元素。…

编程新手如何快速提升编码能力?

编程新手想要快速提升编码能力,可以遵循以下几个策略: 基础扎实:首先,确保你对所学编程语言的基础概念有深刻理解,包括变量、数据类型、控制结构(如循环、条件语句)、函数、类和对象&#xff08…

使用 Docker 自建一款怀旧游戏之 - 扫雷

1)扫雷 简介 扫雷 是一种经典的单人电脑游戏,最初由微软公司在 1990 年代开发并内置在 Windows 操作系统中。游戏的目标是在一个由方块组成的网格上揭开所有非地雷的方块,而不触发地雷。每个方块上都标有数字,表示周围 8 个方块中…

Java网址url工具类

功能描述 无需引入三方依赖文本匹配网址(支持多个)网址解析(包括协议、主机、路径、参数等) package com.qiangesoft.image.utils;import org.springframework.util.Assert; import org.springframework.util.CollectionUtils;i…

行为学学习记忆实验和抗焦虑实验两款硬件

安徽耀坤XWX-BM八臂迷宫实验(Eight-arm Maze Test,RMT)由八个完全相同的臂组成,这些臂从一个中央平台放射出来,所以又被称为放射迷宫。其基本方式是:训练动物受食物的驱使对迷宫的各臂进行探究,…

xLua背包实践

准备工作 环境,代码 在C#代码方面我们需要准备单例模式基类,AB包管理器,lua解析器管理器 详情请见AB包管理器 xlua详解 然后是Xlua包和AB包,具体导入方法也在上面的链接中 然后是lua的三个文件 具体代码: JsonUtil…

SSH Config 后门 | Linux 后门系列

ssh 客户端配置文件加载顺序 命令行参数 > ~/.ssh/config > /etc/ssh/ssh_config Ubuntu server 16.04 默认 /etc/ssh/ssh_config # Host * # ForwardAgent no # ForwardX11 no # RhostsRSAAuthentication no # RSAAuthentication …

一、OSPF基础

目录 1.路由协议的优先级 2.转发原则:最长匹配原则 3.负载分担 4.路由备份(浮动路由) 5.路由协议的分类 6.动态路由 7.距离矢量路由协议(BGP,RIP) 8.链路状态路由协议(OSPF,I…

联系Odoo partner邮件怎么写

亲爱的Odoo 伙伴 我是广东同欣的惊蛰,我通过Odoo官方的珠三角 Partner列表找到了你。 GuangDong TongXin Ai Technology Co., Ltd.,是一家面向中国提供Odoo服务的高科技公司。同欣总部位于广州,目前客户覆盖在广州,深圳&#…

SpringBoot配置HTTPS及开发调试

前言 在实际开发过程中,如果后端需要启用https访问,通常项目启动后配置nginx代理再配置https,前端调用时高版本的chrome还会因为证书未信任导致调用失败,通过摸索整理一套开发调试下的https方案,特此分享 后端配置 …

西瓜书学习——决策树形状、熵和决策树的本质

文章目录 决策树形状监督学习算法分类与回归 熵信息熵香农熵 (Shannon Entropy) - H(X)联合熵 (Joint Entropy) - H(X, Y)条件熵 (Conditional Entropy) - H(Y|X)互信息 (Mutual Information) - I(X; Y)相对熵 (Relative Entropy) / KL散度 (Kullback-Leibler Divergence) - DK…

misc学习

一.知识点 1.BMP文件 BMP文件主要有四部分组成,位图头、位图信息、调色板、位图数据。 bmp文件头(bmp file header):提供文件的格式、大小等信息 位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息…

PCL 点云表面重建之曲面平滑(Mobile Least Square, MLS)

一、介绍 1.1 MLS介绍 移动最小二乘法(Mobile Least Square, MLS)是一种用于曲面重建或形变的方法。它通过对曲面进行局部加权平均来减小噪声和估计曲面上的法线方向。   MLS方法的基本思想: 以每个点为中心取一定半径内的邻域点,然后通过最小二乘法拟合一个局部平面或曲…