浏览器数据储存方式:Cookie、LocalStorage、SessionStorage和IndexedDB

175 阅读4分钟

一、引言

js中提供了多种数据存储技术,如Cookie、LocalStorage、SessionStorage和IndexedDB

image.png

二、Cookie

1.Cookie是什么

Cookie是存储在客户端的小型文本文件,由服务器发送到用户的浏览器,并随后每次请求都会被发送回服务器。它用于跟踪用户会话和存储少量数据,例如用户身份,登录状态等。Cookie的最大容量为4KB。Http请求中自动携带,可自行设置过期时间。

2.如何设置和获取cookie?

image.png 3.Cookie的限制和安全性

①.Cookie的大小通常为4kb左右

②.Cookie会在每次HTTP请求中被发送到服务器,增加网络流量。

③.Cookie存储在客户端,可能被恶意脚本或跨站点脚本攻击利用。

④.Cookie可以设置过期时间,也可以通过设置路径、域名和安全标志来限制访问

三、LocalStorage

1、LocalStorage是什么?

LocalStorage是HTML5提供的一种持久化的本地存储机制,用于在浏览器中存储键值对数据

2、如何使用LocalStorage?

image.png

3、LocalStorage的限制和安全性

① LocalStorage的容量通常在5MB到10MB之间。

② LocalStorage存储在客户端,不会随着每次请求被发送到服务器。

③ LocalStorage在同源策略下是安全的,不同域的页面无法访问彼此的数据。

④ LocalStorage是持久化的,数据会一直保存在客户端直到被主动清除。

四、SessionStorage

1、SessionStorage是什么?

SessionStorage是一种在浏览器中存储数据的机制,它提供了一个会话级别的解决方案。数据存储在键值对中,只在当前会话中有效,当会话结束时数据将被删除。

2、如何使用SessionStorage?

① SessionStorage的容量通常在5MB到10MB之间。

② SessionStorage存储在客户端,不会随着每次请求被发送到服务器。

③ SessionStorage在同源策略下是安全的,不同域的页面无法访问彼此的数据。

④ SessionStorage的数据在浏览器会话结束时会被清除。

五、IndexedDB

1、IndexedDB是什么?

IndexedDB是一种在浏览器中存储大量结构化数据的机制,它提供了一个类似数据库的解决方案。它允许你存储和检索对象,支持事务和索引。

2、IndexedDB的基本使用

image.png IndexedDB因为个别的文件问题,然后导致有报错

3、IndexedDB的限制和安全性

  1. IndexedDB的容量通常较大,可以存储大量数据。
  2. IndexedDB存储在客户端,不会随着每次请求被发送到服务器。
  3. IndexedDB在同源策略下是安全的,不同域的页面无法访问彼此的数据。
  4. IndexedDB提供了强大的查询和索引功能,支持事务操作。

六、四种方式的区别

1、数据容量

cookie:通常限制在4KB左右

LocalStorage和SessionStorage:通常限制在5MB到10MB之间,具体容量限制可以根据浏览器而有所不同。

indexedDB:容量较大,可以存储大量数据。甚至有人说理论上无限大,上限是硬盘容量大小。

2、生命周期

cookie可以设置过期时间,可以在浏览器会话中持久保存数据

LocalStorage是存储在本地浏览器,除非清楚数据

SessionStorage仅在当前打开的网页会话时有效,当关闭浏览器或窗口时数据就会被清理

IndexedDB数据是长期存储的,除非显示被删除

3、安全性

cookie:可以设置路径、域名和安全标志来限制访问,但仍然容易受到恶意脚本或跨站点脚本攻击的影响。

LocalStorage、SessionStorage和indexedDB:在同源策略下是安全的,不同域的页面无法访问彼此的数据。

4、功能和灵活性

cookie:主要用于会话跟踪和存储少量数据,功能相对简单。

LocalStorage和SessionStorage:提供了基本的键值对存储,适合用于存储较大量的数据。

indexedDB:提供了更强大的查询和索引功能,支持事务操作,适合存储和操作大量结构化数据。

最后,以上是个人对这几种存储方式的理解