存储方式 - 前端学习

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() 清除所有cookie
    getAllCookies() 返回所有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 ,即可以删除cookie
    document.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 进⾏操作会⾮常便

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

液氢产业化进程提速 液氢装备检测市场需求空间广阔

液氢产业化进程提速 液氢装备检测市场需求空间广阔 液氢装备检测试验项目涉及到火烧试验、置换试验、振动试验、燃烧实验、高压氢循环试验、预冷试验、液氢阀门检测试验等。检测试验是推动氢能技术自主化、高质量发展的重要步骤&#xff0c;近年来&#xff0c;随着液氢应用场景…

C++之std::is_trivially_copyable(平凡可复制类型检测)

目录 1.C基础回顾 1.1.平凡类型 1.2.平凡可复制类型 1.3.标准布局类型 2.std::is_trivially_copyable 2.1.定义 2.2.使用 2.3.总结 1.C基础回顾 在C11中&#xff0c;平凡类型&#xff08;Trivial Type&#xff09;、平凡可复制类型&#xff08;TrivialCopyable&#x…

mysql中单表查询方法

大家好。我们知道&#xff0c;mysql有一个查询优化器的模块。当我们用sql语句查询表中记录时&#xff0c;会对这条查询语句进行语法解析&#xff0c;然后就会交给查询优化器来进行优化&#xff0c;优化后生成一个执行计划&#xff0c;这个执行计划表明了应该使用哪些索引进行查…

机器学习之制作数据集(CPU版本)

文章目录 一、配置环境1.1 Anaconda 下载安装1.1.1 Anaconda 官网下载1.1.2 清华镜像站下载1.1.3 Anaconda 安装 1.2 配置虚拟环境1.4 Paddlepaddle 安装&#xff08;CPU版本&#xff09;1.5 PaddleOCR 下载1.6 PPOCRLabel 安装 二、数据集制作2.1 运行 PPOCRLabel2.2 数据标注…

理解I2C总线规范

前言&#xff1a; I2C 总线&#xff0c;也可写作IIC总线&#xff08;Inter-Integrated Circuit&#xff09;&#xff0c;是一种非常流行且功能强大的总线&#xff0c;用于主设备&#xff08;或多个主设备&#xff09;与单个或多个从设备之间的通信。图 1 说明了有多个不同的外…

YOLOV5 改进:替换backbone为EfficientNet

1、介绍 本章将会把yolov5的主干网络替换成EfficientNet V2,这里直接粘贴代码 详细的可以参考之前的内容:YOLOV5 改进:替换backbone(MobileNet为例)_yolov5主干网络更换为mobile-CSDN博客 更多的backbone更换参考本专栏: YOLOV5 实战项目(训练、部署、改进等等)_听风吹…

自养号测评是什么?亚马逊、沃尔玛、Target卖家如何建立自己的护城河?

近期有跨境卖家咨询我自养买家账号测评的事情&#xff0c;他们还是有不了解自养号测评的&#xff0c;所以珑哥觉得有必要再讲一下卖家测评的一些事情&#xff0c;之前文章也说过。这可能是跨境卖家运营的一个趋势。今天珑哥着重来介绍一下自养号测评 一、什么叫做自养号测评&a…

揭秘APP广告变现的高效秘诀:如何让你的APP更赚钱?

在数字化时代&#xff0c;APP已成为人们获取信息、娱乐休闲的重要平台。对于许多内容创作者来说&#xff0c;如何通过APP实现盈利&#xff0c;是一个亟待解决的问题。而APP广告变现项目&#xff0c;正是其中一种备受关注的盈利模式。那么&#xff0c;如何有效地利用APP广告变现…

代数拓扑学

啊&#xff0c;哈喽&#xff0c;小伙伴们大家好。我是#张亿&#xff0c;今天呐&#xff0c;学的是代数拓扑学 代数拓扑学是拓扑学中主要依赖 [1]代数工具来解决问题的一个分支。同调与同伦的理论是代数拓扑学的两大支柱&#xff08;见同调论&#xff0c;同伦论&#xff09;。 …

Vxe UI 表单设计器、零代码平台

vxe-pc-ui Vxe UI 表单设计器、零代码表单设计器 安装 Vxe UI PC端组件库 官方文档 查看 github、gitee // ...import VxeUI from vxe-pc-uiimport vxe-pc-ui/lib/style.css// ...// ...createApp(App).use(VxeUI).mount(#app)// ...使用 vxe-form-design 设计器组件 vxe-fo…

西门子smart line触摸屏软件安装 WinCC Flexible Smart V4SP1 V3

提示&#xff1a;Wincc flexible smart软件为西门子Smart line系列触摸屏的专用组态软件&#xff0c;这款屏不能用博途来组态&#xff0c;只能用这个软件来组态。西门子Smart line系列触摸屏的常用型号为SMART 700 IE V3/V4&#xff0c;SMART 1000 IE V3/V4。 Wincc flexible …

Windows远程桌面是什么?

Windows远程桌面是一种远程桌面协议&#xff0c;允许用户通过网络连接到远程Windows计算机&#xff0c;并在本地操作远程计算机。它为用户提供了访问远程计算机的便利性&#xff0c;可以在不同地区的电脑或设备之间进行信息远程通信。 天联解决方案 在远程桌面技术中&#xff…

香港优才计划需要什么条件?一文给你说清2024优才政策、申请利弊及获批攻略

香港优才计划申请&#xff0c;竞争正逐渐加剧&#xff0c;在正式递交申请前&#xff0c;客观评估自身申请条件&#xff0c;找准个人履历中与香港人才引进的契合点&#xff0c;并在申请材料中详细表明&#xff0c;更有助于获批。 在申请之前&#xff0c;我们必须明白一个事实&a…

Windows 11 HBuilder X的安装和环境搭建教程

文章目录 目录 文章目录 安装流程 小结 概要安装流程技术细节小结 概要 HBuilder X是一个由DCloud推出的集成开发环境&#xff08;IDE&#xff09;&#xff0c;主要用于构建基于HTML、CSS和JavaScript的跨平台应用程序&#xff0c;如微信小程序、App、H5等。它提供了丰富的功能…

群晖NAS安装web服务器和搭建PHP环境

文章目录 安装Web Station 和 PHP配置PHP配置新站点&#xff08;虚拟主机&#xff09;&#xff1a;配置nginx 安装MariaDB修改数据库配置配置远程连接远程连接 最近折腾了一台群晖NAS&#xff0c;并搭建了一套web服务器&#xff0c;关于其中的一些设置&#xff0c;和传统的Linu…

领导让我调研CI/CD,我给他看了这个

一、概念解释 CI/CD是指持续集成&#xff08;Continuous Integration&#xff09;和持续交付/持续部署&#xff08;Continuous Delivery/Continuous Deployment&#xff09;的缩写&#xff0c;是现代软件开发中的重要实践。它们旨在通过自动化和持续化的方式改善软件开发、测试…

注册表Windows兼容性设置(AppCompatFlags)

属性 - 兼容性 EXE文件属性中有兼容性标签&#xff0c;当有些老版本软件不能正常运行时经常会调整这里的设置。 image.png 上面的所有选项都写在注册表中&#xff0c;其中“更改所有用户的设置”保存在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppC…

零售品牌做好差旅报销管理,真的能省钱

一年一度的“618”如期而至,甚至启动更早了。 各大厂商宣布取消延用了十多年的预售机制,主打“现货开卖”,充分回归“消费者价值”。 零售品牌给消费者省钱,更要给自己省钱。而这前提是充分了解“钱花在哪了”、“怎么花更合理”: ● 商业化BD、促销、营销等市场活动频繁,差…

操作系统实战(四)(linux+C语言)

目录 实验目的 前提知识 实验题目 题目分析 实验程序 头文件 头文件实现 核心代码文件 &#xff08;各类进程&#xff09; 生产者 抽烟者A 抽烟者B 抽烟者C makefile文件 实验运行 运行结果分析 总结 实验目的 加深对并发协作进程同步与互斥概念的理解&…

nginx与nginx-rtmp-module安装

nginx与nginx-rtmp-module安装 画了好几天图&#xff0c;实在有些乏力&#xff0c;找点有意思的事情做做 觉得视频流传输挺有意思&#xff0c;B站找了些视频&#xff0c;但感觉有些大同小异&#xff0c;讲得不是很清楚 FFmpeg/RTMP/webRTC丨90分钟搞定直播逻辑-推流-流媒体服…