存储方式 - 前端学习

1. cookie是什么?你了解cookie吗?

        在计算机领域中,特指一种由服务器发送到用户浏览器并保存在用户计算机上的小型文本文件。这个文件可以被服务器用来识别用户身份、跟踪用户活动、保存用户设置等。它通常由名称、值、域名、路径、过期时间等字段组成

1.1 cookie有那些属性?

Cookie 中属性的解释:
        ● Name:cookie的名字
        ● Value:cooke的值
        ● Path:定义了Web站点上可以访问该Cookie的目录
        ● Expires / Max-Age:表示cookie的过期时间,也就是有效值,cookie在这个值之前都有效。
        ● Size:表示cookie的大小
        ● HttpOnly:值为true时,Cookie只会在Http请求头中存在,不能通过doucment.cookie(JavaScript)访问Cookie。
        ● Secure:值为true时,只能通过https来传输Cookie。
        ● SameSite
                ● 值为Strict,完全禁止第三方Cookie,跨站时无法使用Cookie。
                ● 值为Lax,允许在跨站时使用Get请求携带Cookie,下面有一个表格介绍Lax的Cookie使用情况。
                ● 值为None,允许跨站跨域使用Cookie,前提是将Secure属性设置为true。
       ● Priority:Cookie的优先级。值为Low/Medium/High,当Cookie数量超出时,低优先级的Cookie会被优先清除

 1.2. Cookie 的生命周期

以前学习cookie就只知道cookie的一种存储方式,但其实cookie有两种方式,一种是会话性,一种是持久性

        会话性:如果cookie为会话性,那么cookie仅会保存在客户端的内存中,当我们关闭客服端时cookie也就失效了;
        持久性:如果cookie为持久性,那么cookie会保存在用户的硬盘中,直至生存期结束或者用户主动将其销毁

Cookie 使用的常见方法(服务端):
        ● new Cookie(String name, String value):创建一个Cookie对象,必须传入cookie的名字和cookie的值
        ● getValue():得到cookie保存的值
        ● getName():获取cookie的名字
        ● setMaxAge(int expiry):设置cookie的有效期,默认为-1。这个如果设置负数,表示客服端关闭,cookie就会删除。0表示马上删除。正数表示有效时间,单位是秒。
        ● setPath(String uri):设置cookie的作用域
        ● response.addCookie(Cookie cookie):将cookie给客户端进行保存
        ● resquest.getCookies():得到客服端传过来的所有cookie对象

Cookie 使用的常见方法 (客户端):

        ● JavaScript 可以使用 document.cookie 属性来创建 、读取、及删除(覆盖) cookie

前端项目一般会对cookie进行封装

/*toString() 把 Date 对象转换为字符串toTimeString() 把 Date 对象的时间部分转换为字符串toDateString() 把 Date 对象的日期部分转换为字符串toGMTString() 请使用 toUTCString() 方法代替toUTCString() 根据世界时,把 Date 对象转换为字符串toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数valueOf() 返回 Date 对象的原始值setItem("键","值",未来到期的毫秒值);removeItem("键");getItem("键")clear() 清除所有cookiegetAllCookies() 返回所有cookie的键值对  组成一个对象*//** 根据键值设置cookie值,  [millisecond为过期的毫秒值] */
function setItem(key, value, millisecond) {let str = "";str = str + key + "=" + value;if (millisecond != "undefined") {// 现在的时间加上你限定的时间 就是到期时间let date = new Date(new Date().getTime() + millisecond).toUTCString();str += ";expires=" + date;}document.cookie = str;
}/**  根据键删除cookie
*/
function removeItem(key) {// 设定为 到期时间为 0 ,即可以删除cookiedocument.cookie = "" + key + "=" + "*;expires=" + new Date(new Date().getTime() - 1000).toUTCString();
}/**  根据键获取cookie值, 若未获取到返回 null
*/
function getItem(key) {let cookiesStr = document.cookie;if (cookiesStr == "") {return null;}let index = cookiesStr.indexOf(key + "=");if (index == -1) {return null;}index = index + key.length + 1;// let cookieStr = cookiesStr.substring(index)// 此key值的最后一个字符的序号let subIndex = cookieStr.indexOf(";");if (subIndex != -1) {// 截取出来cookieStr = cookieStr.substring(0, subIndex);}return cookieStr;
}/** 清除所有cookie */
function clear() {let cookieObj = getAllCookies();for (const key in cookieObj) {removeItem(key);}
}/** 获取所有cookie, 返回一个cookie对象 */
function getAllCookies() {let cookiesStr = document.cookie;let cookieObj = new Object();// 当前cookie为空时,返回空对象if (cookiesStr == "") {return cookieObj;}let cookieArr = cookiesStr.split(";");for (let index = 0; index < cookieArr.length; index++) {let cookieKey = cookieArr[index].substring(0, cookieArr[index].indexOf("=")).trim();let cookieVal = cookieArr[index].substring(cookieArr[index].indexOf("=") + 1).trim();cookieObj[cookieKey] = cookieVal;}return cookieObj;
}

1.3 总结

总结:Cookie就是一些数据,用于存储服务器返回给客服端的信息,客户端进行保存。在下一次访问该网站时,客户端会将保存的cookie一同发给服务器,服务器再利用cookie进行一些操作。利用cookie我们就可以实现自动登录,保存游览历史,身份验证等功能。

2. 前端的储存方式有那些?

cookies在 HTML5 标准前本地储存的主要⽅式,优点是兼容性好,请求头⾃带 cookie⽅便,缺点是⼤⼩只有4k,⾃动请求头加⼊cookie 浪费流量,每个 domain 限制 20 个 cookie,使⽤起来麻烦,需要⾃⾏封装
localStorageHTML5 加⼊的以键值对(Key-Value)为标准的⽅式,优点是操作⽅便,永久性储存(除⾮⼿动删除),⼤⼩为5M,兼容IE8+

localStorage.setItem("key","value");//存储
localStorage.getItems(key);//按key进行取值
localStorage.removeItems(key);//按key单个删除
localStorage.clear();//删除全部数据
localStorage.length;//获得数据的数量
localStorage.valueOf();//获取全部值


sessionStorage与 localStorage 基本类似,区别是sessionStorage当⻚⾯关闭后会被清理,⽽且与 cookie、localStorage 不同,他不能在所有同源窗⼝中共享,是会话级别的储存⽅式;

sessionStorage.setItem("key","value");//存储
sessionStorage.getItems(key);//按key进行取值
sessionStorage.removeItems(key);//按key单个删除
sessionStorage.clear();//删除全部数据
sessionStorage.length;//获得数据的数量
sessionStorage.valueOf();//获取全部值


Web SQL:2010 年被 W3C 废弃的本地数据库数据存储⽅案,但是主流浏览器(⽕狐除外)都已经有了相关的实现,web sql 类似于SQLite,是真正意义上的关系型数据库,⽤sql进⾏操作,当我们⽤JavaScript时要进⾏转换,较为繁琐
IndexedDB是被正式纳⼊HTML5 标准的数据库储存⽅案,它是NoSQL数据库,⽤键值对进⾏储存,可以进⾏快速读取操作,⾮常适合web场景,同时⽤JavaScript 进⾏操作会⾮常便

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

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

相关文章

【漏洞复现】号卡极团分销管理系统 ue_serve.php 任意文件上传漏洞

0x01 产品简介 号卡极团分销 管理系统&#xff0c;同步对接多平台&#xff0c;同步订单信息&#xff0c;支持敢探号一键上架&#xff0c;首页多套U|商品下单页多套模板&#xff0c;订单查询支持实时物流信息、支持代理商自定义域名、泛域名绑定&#xff0c;内置敢探号、172平台…

CLIP源码详解:clip.py 文件

前言 这是关于 CLIP 源码中的 clip.py 文件中的代码带注释版本。 clip.py 文件的作用&#xff1a;封装了 clip 项目的相关 API&#xff0c;通过这些 API &#xff0c;我们可以轻松使用 CLIP 项目预训练好的模型进行自己项目的应用。 另外不太容易懂的地方都使用了二级标题强…

【机器学习300问】101、1x1卷积有什么作用?

卷积神经网络最重要的操作就是卷积层的卷积操作&#xff0c;之前文章中介绍过&#xff0c;卷积核filter往往都是3x3或者5x5什么的&#xff0c;但有一种非常特殊的卷积——1x1卷积。他在CNN中扮演着非常重要的角色。 一、通道维度的降维/升维 这是1x1卷积最显著的作用之一。通过…

AIGC 008-IP-Adapter文本兼容图像提示适配器用于文本到图像扩散模型

AIGC 008-IP-Adapter文本兼容图像提示适配器用于文本到图像扩散模型&#xff01; 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 这篇论文介绍了 IP-Adapter&#xff0c;一种 高效地将预训练的图像到图像转换模型适应到新领域 的方法。它通过在预训练模型的 输入端 添加一个…

如果任务过多,队列积压怎么处理?

如果任务过多,队列积压怎么处理? 1、内存队列满了应该怎么办2、问题要治本——发短信导致吞吐量降低的问题不能忽略!!3、多路复用IO模型的核心组件简介1、内存队列满了应该怎么办 如图: 大家可以看到,虽然现在发短信和广告投递,彼此之间的执行效率不受彼此影响,但是请…

SpringBoot 上传文件示例

示例效果&#xff1a; 前端代码&#xff1a; <html> <head><title>上传文件示例</title></head> <body> <h2>方式一&#xff1a;普通表单上传</h2> <form action"/admin/upload" method"post" enctyp…

【Android14 ShellTransitions】(五)启动Transition

这一节的内容涉及WMCore以及WMShell&#xff0c;主要是启动Transition。 回到ActivityStarter.startActivityUnchecked方法&#xff1a; 看下最后启动Transition的部分&#xff0c;在ActivityStarter.handleStartResult中&#xff1a; 只关注我们要关注的部分。 首先是如果这…

网络原理-HTTP协议

HTTP协议 HTTP协议全称为超文本传输协议,除了能传输字符串,还能传输图片、视频、音频等。 当我们在访问网页的时候,浏览器会从服务器上下载数据,这些数据都会放在HTTP响应中,然后浏览器再根据这个HTTP响应显示出网页信息。 抓包 抓包工具本质上是一个代理工具,即我们将构造…

STM32H743+USBHID+CubeMX配置

一、环境准备 电脑系统&#xff1a;Windows 10 专业版 20H2 IDE&#xff1a;Keil v5.35、STM32CubeMX v6.5.0 测试硬件&#xff1a;正点原子阿波罗STM32H743 二、测试步骤 1、使用用例工程 配置STM32H743定时器功能-CSDN博客https://blog.csdn.net/horse_2007s/article/d…

HR招聘面试测评,哪些工作岗位需要测评创新能力?

什么是创新能力&#xff1f; 创新能力指在现有的物质基础上&#xff0c;通过某些特定的条件&#xff0c;促成满足未来社会发展的新事物。无论是个人还是国家都需要巨大的创新能力&#xff0c;因为创新是一切发展的根基&#xff0c;离开了创新&#xff0c;所有的发展都是原地踏…

每日复盘-20240527

今日关注&#xff1a; 六日涨幅最大: ------1--------300956--------- 英力股份 五日涨幅最大: ------1--------300956--------- 英力股份 四日涨幅最大: ------1--------301361--------- 众智科技 三日涨幅最大: ------1--------301361--------- 众智科技 二日涨幅最大: ----…

CAS原理技术

CAS原理技术 背景介绍结构体系术语接口原理基础模式1. 首次访问集成CAS Client的应用2. 再次访问集成CAS Client的同一应用3. 访问集成CAS Client的其他应用 代理模式1. 用户在代理服务器上执行身份认证2. 通过代理应用访问其他应用上授权性资源 背景 本文内容大多基于网上其他…

开机必启截图标注类神器Snipaste,基本使用及技巧

目录 一、软件简介二、基本安装三、自启设置四、快捷操作五、使用技巧 一、软件简介 Snipaste 是一款简单高效的截图工具。只需按下 F1 即可截图&#xff08;可进行自主设置&#xff09;&#xff0c;再按 F3 即可将截图置顶显示&#xff08;贴图功能&#xff09;。你还可以将剪…

反射器与联邦实验

要求&#xff1a; 1、AS1存在两个环回, 一个地址为192.168.1.0/24该地址不能在任何协议中宣告AS3存在两个环回, 一个地址为192.168.2.0/24该地址不能在任何协议中宣告 最终要求这两个环回可以互相通讯; AS1的另一个环回为10.1.1.0/24 AS3的另-个环回为10.1.2.0/24 2、整个AS2的…

JMeter 测试单节点与集群的并发异常率

一. JMeter 测试单节点与集群的并发异常率 下载地址&#xff1a;https://jmeter.apache.org/download_jmeter.cgi 单个tomcat测试结果(2000个用户&#xff0c;每个用户访问100次) nginx集群负载均衡tomcat结果(2000个用户&#xff0c;每个用户访问100次)

YOLOV8逐步分解(5)_模型训练初始设置之混合精度训练AMP

yolov8逐步分解(1)--默认参数&超参配置文件加载 yolov8逐步分解(2)_DetectionTrainer类初始化过程 yolov8逐步分解(3)_trainer训练之模型加载_yolov8 加载模型-CSDN博客 YOLOV8逐步分解(4)_模型的构建过程 在上述文章逐步分解&#xff08;3&#xff09;和&#xff08;4&…

【吊打面试官系列】Java高并发篇 - ConcurrentHashMap 的并发度是什么?

大家好&#xff0c;我是锋哥。今天分享关于 【ConcurrentHashMap 的并发度是什么?】面试题&#xff0c;希望对大家有帮助&#xff1b; ConcurrentHashMap 的并发度是什么? ConcurrentHashMap 的并发度就是 segment 的大小&#xff0c;默认为 16&#xff0c; 这意味着最多同时…

Android:将时间戳转换为本地时间格式

一、效果图 图1&#xff0c;中国的时间格式 图2&#xff0c;美国的时间格式 二、StringUtil.kt代码 import java.text.DateFormat import java.text.SimpleDateFormat import java.util.* object StringUtil {fun formatTimestamp(currentTime: Long): String {var sdf Si…

【STM32】检测SD卡是否插入

【STM32】检测SD卡是否插入 开发环境原理图确定引脚的高低电平中断方式检测插入配置引脚打开引脚的中断编写代码显示SD卡信息引脚中断回调函数 实现的效果 开发环境 软件&#xff1a;STM32CubeIDE1.14.1 硬件&#xff1a;立创天空星STM32F407VE&#xff1b;SD卡 原理图 要确…

isscc2024 short course4 In-memory Computing Architectures

新兴的ML加速器方法&#xff1a;内存计算架构 1. 概述 内存计算&#xff08;In-memory Computing&#xff09;架构是一种新兴的机器学习加速器方法&#xff0c;通过将计算能力集成到存储器中&#xff0c;以减少数据移动的延迟和能耗&#xff0c;从而提高计算效率和性能。这种方…