浏览器的四大存储方式!!
2024-08-15 15:14 阅读(248)

今天来聊聊浏览器的四大存储方式,LocalStorage、SessionStorage、Cookies以及IndexedDB

不同特点



LocalStorage:


持久存储,在页面/浏览器关闭后数据仍然存在

每个域名下存储空间为 5MB

只支持字符串类型的键值对

受同源策略限制,无法跨域访问




SessionStorage:


会话存储,在页面/浏览器关闭后数据会被清除

每个域名下存储空间为 5MB

只支持字符串类型的键值对

受同源策略限制,无法跨域访问




Cookies:


小容量存储,单个 cookie 大小不超过 4KB

会随每次 HTTP 请求发送到服务器

可设置过期时间和作用域

只支持字符串类型的键值对




IndexedDB:


大容量 NoSQL 数据库,没有固定存储上限

支持复杂的数据结构,如数组和对象

需要通过复杂的 API 进行操作

受同源策略限制,无法跨域访问




共同点

这四种存储方式都是基于 Web 技术实现的客户端数据存储方案



存储位置:


它们都是在客户端(浏览器)中进行数据存储,而非服务器端。




键值对结构:


除了 IndexedDB,其他三种方式(LocalStorage、SessionStorage、Cookies)都采用键值对的形式来存储数据。




数据隔离:


数据存储在不同的域名或路径下是相互隔离的,互不干扰。




异步操作:


除了 Cookies 会随请求发送到服务器,其他三种方式都是在客户端异步操作的。




容量限制:


除了 IndexedDB 没有固定上限,其他三种方式都有一定的存储容量限制。




数据持久性:


LocalStorage 和 IndexedDB 的数据是持久存储的,除非主动删除;而 SessionStorage 和 Cookies 则有生命周期限制。




区别

主要区别如下:



数据生命周期:


LocalStorage 和 IndexedDB 数据是持久存储的,除非主动清除。

SessionStorage 数据在会话结束(如页面关闭)时会被清除。

Cookies 可以设置过期时间,过期后会被浏览器删除。




数据大小限制:


LocalStorage 和 SessionStorage 每个域名下的存储容量通常为 5MB。

Cookies 容量较小,通常不超过 4KB。

IndexedDB 没有固定的存储上限。




传输机制:


Cookies 会随每次 HTTP 请求发送到服务器,其他三种方式不会。




数据结构:


LocalStorage、SessionStorage 和 Cookies 只支持字符串类型的键值对。

IndexedDB 支持更复杂的数据结构,如数组和对象。




操作复杂度:


LocalStorage、SessionStorage 和 Cookies 使用简单,可通过 JavaScript 直接操作。

IndexedDB 需要通过复杂的 API 进行各种数据库操作,使用起来较为复杂。




跨域限制:


LocalStorage 和 SessionStorage 受同源策略限制,无法跨域访问。

Cookies 可以设置作用域,限制其在特定路径或域名下可用。

IndexedDB 也受同源策略限制