wangbinze / Daily---3and1

0 stars 0 forks source link

❤️❤️❤️Question021 -JavaScript、客户端存储的几种方式,分别介绍一下 #21

Open wangbinze opened 3 years ago

wangbinze commented 3 years ago

题目:客户端存储的几种方式,分别介绍一下

wangbinze commented 3 years ago

与特定用户相关的信息应该保存在用户的机器上。无论是登录信息、个人偏好,还是其他数据,Web应用程序提供者都需要有办法把它们保存在客户端。

cookie

cookie的构成

注意:不要再cookie中存储重要或敏感的信息。cookie数据不是保存在安全的环境中,因此任何人都可能获得。

Web Storage

Web Storage 的目的是解决通过客户端存储不需要频繁发送回服务器的数据时使用cookie的问题。

两种类型

sessionStorage对象

只存储会话数据,浏览器关闭则数据删除。不受页面刷新的影响,可以在浏览器崩溃并重启后恢复。 因为 sessionStorage 对象是 Storage 的实例,所以可以通过使用 setItem()方法或直接给属性赋值给它添加数据。


// 使用方法存储数据
sessionStorage.setItem("name", "Nicholas");
// 使用属性存储数据
sessionStorage.book = "Professional JavaScript";

通过 Web Storage 写入的任何数据都可以立即被读取。

要从 sessionStorage 中删除数据,可以使用 delete 操作符直接删除对象属性,也可以使用removeItem()方法。


delete sessionStorage.name; // 使用 delete 删除值
sessionStorage.removeItem("book");  // 使用方法删除值

sessionStorage 对象应该主要用于存储只在会话期间有效的小块数据。如果需要跨会话持久存储数据,可以使用 globalStorage 或 localStorage。

localStorage对象

在HTML5规范里,localStorage对象取代了globalStorage,作为在客户端永久存储数据的机制。要访问同一个 localStorage 对象,页面必须来自同一个域(子域不可以)、在相同的端口上使用相同的协议。


localStorage.setItem("name", "Nicholas"); // 使用方法存储数据
localStorage.book = "Professional JavaScript";  // 使用属性存储数据

let name = localStorage.getItem("name"); // 使用方法取得数据
let book = localStorage.book; // 使用属性取得数据

存储事件

每当 Storage 对象发生变化时,都会在文档上触发 storage 事件。使用属性或 setItem()设置值、使用 delete 或 removeItem()删除值,以及每次调用 clear()时都会触发这个事件。

IndexedDB

自行了解。