【JS红宝书学习笔记】第25章 客户端存储

第25章 客户端存储

HTTP是无状态的,也就是说,你这次访问服务器,关闭后再次访问服务器,服务器是意识不到又是你来访问的。

登录时,浏览器需要帮我们在每一次请求里加入用户名和密码,这样才能做到保持登录
可以实现每次http请求都自动带数据给服务器的技术------cookie

域、路径、过期时间和 secure 标志用于告诉浏览器什么情况下应该在请求中包含 cookie。这些参数并不会随请求发送给服务器,实际发送的只有 cookie 的名/值对。

cookie的基本流程:

cookie就是一种存储在浏览器的数据而已,需要在http协议环境下才能使用

优点:兼容性好,请求头自带cookie

缺点:打开浏览器,可以看到保存了哪些cookie,所以很不安全;数据体积小

使用:
创建cookie: 使用document.cookie属性来设置cookie的值,并指定cookie的名称、值、过期时间等信息。(名称和值必需)

设置 cookie 的格式如下:

javascript 复制代码
name=value; expires=expiration_time; path=domain_path; domain=domain_name; secure
javascript 复制代码
document.cookie = "color=red; expires="+(new Date("2024-7-14"));
document.cookie = "宽度=100px; expires="+(new Date("2024-7-14"));
document.cookie = "height=200px; expires="+(new Date("2024-7-14"));

删除cookie: 通过将cookie的过期时间设置为过去的时间来删除cookie。

javascript 复制代码
document.cookie = "color=; expires="+(new Date("1970-1-1"));
document.cookie = "width=; expires="+(new Date("1970-1-1"));

获取cookie: 通过解析document.cookie属性的值来读取cookie的内容。

javascript 复制代码
var str = document.cookie;
console.log("缓存的数据:",str);

**修改cookie:**修改cookie的内容可以通过重新设置相同名称的cookie来实现。

javascript 复制代码
 document.cookie = "color=blue; expires="+(new Date("1970-1-1"));

Session会话

浏览器和服务器是在进行会话的,那么浏览器访问服务器就是会话的开始

但是会话结束的时间比较模糊,因为关掉网页可能只是按错而已

因此不同的网站对于每个用户的会话都设定了时间(结束会话的时间)以及唯一的ID(Session ID,一串没有规律的字符串)

服务器自己定义的东西一般会保存在数据库里面

Web Storage

Web Storage 的目的是解决通过客户端存储不需要频繁发送回服务器的数据时使用 cookie 的问题。eb Storage 的第 2 版定义了两个对象:localStorage 和 sessionStorage。localStorage 是永久存储机制,sessionStorage 是跨会话的存储机制。

SessionStorage 和 LocalStorage 使用方法基本一致,唯一不同的是,一旦关闭页面,SessionStorage 将会删除数据。


SessionStorage

只存储会话数据,浏览器关闭时数据会消失。但是页面刷新时不受影响,页面崩溃重启后恢复。

LocalStorage

存储在 localStorage 中的数据会保留到通过 JavaScript 删除或者用户清除浏览器缓存。数据不受页面刷新影响,也不会因关闭窗口、标签页或重新启动浏览器而丢失。

优点:操作方便,永久存储,兼容性较好

缺点: 保存值的类型限定,浏览器在隐私模式下不可读取,不能被爬虫

IndexDB

类似于 SQL 数据库的结构化数据存储机制。IndexedDB 存储的是对象,而不是数据表。对象存储是通过定义键然后添加数据来创建的。游标用于查询对象存储中的特定数据,而索引可以针对特定属性实现更快的查询。

IndexedDB 背后的思想是创造一套 API,方便 JavaScript 对象的存储和获取,同时也支持查询和搜索。

H5标准存储方式,他是以键值对进行存储,可以快速读取,适合web场景
什么情况下适合使用 IndexedDB?

存储大量数据的应用程序

不需要持久 Internet 连接仍可工作的应用程序

Web SQL

2010年被W3C废弃的本地数据库数据存储⽅案,但是主流浏览器(火狐除外)都已经有了相关的实现,web sql类似于SQLite,是真正意义上的关系型数据库,⽤sql进行操作,当我们用JavaScript时要进行转换, 较为繁琐。

☆☆☆总结一下:

前端数据存储有5种方式:

(1)cookie:为了解决HTTP协议的无状态问题(也就是每次访问服务器关闭后再次访问,不能意识到是同一用户),一种每次HTTP请求自动带数据的技术。兼容性好。

但是只能存储少量数据,且打开浏览器就能看到很不安全

(2)localstorage:本地存储,永久存储,数据不受页面刷新、关闭的影响

(3)sessionstroage:会话存储,页面关闭数据清空

(4)indexDB:类似SQL数据库存储,但存储的是对象。适用于需要存储大量数据的应用程序和不用网络连接的应用程序。

(5)Web SQL:关系型数据库,使用要用JS转换,较为繁琐

相关推荐
Nu11PointerException18 分钟前
JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
笔记·学习
王哈哈^_^1 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
亦枫Leonlew2 小时前
三维测量与建模笔记 - 3.3 张正友标定法
笔记·相机标定·三维重建·张正友标定法
考试宝2 小时前
国家宠物美容师职业技能等级评价(高级)理论考试题
经验分享·笔记·职场和发展·学习方法·业界资讯·宠物
cs_dn_Jie2 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
开心工作室_kaic2 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿3 小时前
webWorker基本用法
前端·javascript·vue.js
cy玩具3 小时前
点击评论详情,跳到评论页面,携带对象参数写法:
前端
清灵xmf4 小时前
TypeScript 类型进阶指南
javascript·typescript·泛型·t·infer
小白学大数据4 小时前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫