浏览器缓存:Cookie、LocalStorage、SessionStorage的对比分析

先分别介绍一下这三种浏览器缓存。

Cookie

Cookie是什么

Cookie是一种存储在用户计算机上的小型文本文件,由网站通过浏览器存储在用户计算机上。它通常包含有关用户和网站之间交互的信息。

Cookie的作用

当我们打开一个网站时,如果这个网站我们曾经登录过,那么当我们再次打开网站时,发现就不需要再次登录了,而是直接进入了首页。就比如我们现在用的csdn网站。

 这是怎么做到的呢?其实就是游览器保存了我们的cookie,里面记录了一些信息,当然,这些cookie是服务器创建后返回给游览器的。游览器只进行了保存。下面展示csdn网站保存的cookie。

Cookie的表示 

从上图我们可以看出,cookie是以键值对进行表示的(key-value),例如login_username=kjz,这个就表示cookie的名字是login_username,cookie携带的值是kjz。

Cookie的组成

下面我自己写了一个简易Servlet来设置cookie,我们游览器抓包进行查看。然后进行分析

   以下是cookie中常用属性的解释。

Name:这个是cookie的名字
Value:这个是cooke的值
Path:这个定义了Web站点上可以访问该Cookie的目录
Expires:这个值表示cookie的过期时间,也就是有效值,cookie在这个值之前都有效。
Size:这个表示cookie的大小

Cookie的HTTP传输

之前写过对会话技术的总结,里面有写Cookie是如何在http协议中传输的,读者可以去看看这篇文章:会话技术------Cookie、Session、Token(JWT)详解_session.hashcode-CSDN博客

Cookie的生命周期


 cookie有2种存储方式,一种是会话性,一种是持久性。

会话性:如果cookie为会话性,那么cookie仅会保存在客户端的内存中,当我们关闭客服端时cookie也就失效了
持久性:如果cookie为持久性,那么cookie会保存在用户的硬盘中,直至生存期结束或者用户主动将其销毁。
        cookie我们是可以进行设置的,我们可以人为设置cookie的有效时间,什么时候创建,什么时候销毁。

Localstorage

localStorage 是 Web Storage API 提供的一种在浏览器中存储数据的方式。它允许你将数据存储在浏览器中,以便在同一域名下的页面之间进行共享和持久化。

使用 localStorage 可以方便地存储键值对的数据,并且该数据会一直保存在用户的浏览器中,直到被清除或者网站代码显式移除。

如何访问 LocalStorage 

访问 LocalStorage 非常简单,只需几个步骤:

  1. 转到任何网站或 Web 应用程序,然后按F12键盘打开浏览器控制台。
  2. 接下来,单击应用程序选项卡,在左侧菜单中,您将LocalStorage存储选项卡下看到如下所示。

基本用法

  • setItem()

此方法用于将数据存储在 LocalStorage 中。它接受一个键作为它的第一个参数,然后一个值作为第二个参数。

让我们LocalStorage使用以下内容添加数据。

localStorage.setItem("name", "kjz");
// `name`是键,`kjz`是值

LocalStorage 会将数据存储为字符串,所以如果要保存对象和数组等数据,需要使用JSON.stringify()方法将它们转换为字符串。

例如:

const user = {
  name: "小明",
  age: 23,
};

localStorage.setItem("user-info", JSON.stringify(user));
const names = ["小明", "小张", "小王"];
localStorage.setItem("names", JSON.stringify(names));
  • getItem()

使用getItem()方法从 LocalStorage 中检索数据。此方法接受单个参数,key用于保存数据。

例如,要检索上述user对象等数据,您将使用以下语句:

localStorage.getItem("user-info");

上面的代码将返回一个JSON字符串,如下所示:

"{name:"小明", age:"23"}"

然后,您应该使用该JSON.parse()方法将其转换为对象。

JSON.parse(localStorage.getItem('user-info'));
  • removeItem()

使用removeItem()方法从 LocalStorage 中删除数据。此方法接受 key作为参数。

例如,您将使用以下语句user从 LocalStorage 中删除对象。

localStorage.removeItem("user-info");
  • clear()

使用该clear()方法清除或删除特定实例的 LocalStorage 中的所有数据。

localStorage.clear()  

SessionStorage

 sessionStorage 是HTML5新增的一个会话存储对象,用于临时保存同一窗口(或标签页)的数据(key/value),在关闭窗口或标签页之后将会删除这些数据。是window下的对象。

 特点

  • 只在本地存储。seesionStorage的数据不会跟随HTTP请求一起发送到服务器,只会在本地生效,并在关闭标签页后清除数据。
  • 存储方式。seesionStorage的存储方式与localstorage一样采用key、value的方式。value的值必须为字符串类型。
  • 存储上限限制:不同的浏览器存储的上限也不一样,但大多数浏览器把上限限制在5MB以下。

seesionStorage只能存储字符串的数据,对于JS中常用的数组或对象却不能直接存储,我们可以通过JSON.stringify()将json数据类型转化成字符串,再存储到sessionstorage中就可以了,获取数据时再使用JSON.parse()将读取的字符串转换成对象即可。(数组本质上也是对象类型)

基本用法

存储数据到 sessionStorage

sessionStorage.setItem('key', 'value');

从 sessionStorage获取数据

const valueFromSession = sessionStorage.getItem('key');

移除 sessionStorage中的数据

sessionStorage.removeItem('key');

清空整个sessionStorage中的数据

sessionStorage.clear();

分析三种浏览器的区别

(1)生命周期不同

Cookie 一般由服务器生成,可设置失效时间,如果在浏览器端生成cookie,默认是关闭后失效

localStorage 除非被永久清除,否则永久保存

sessionStorage 仅在当前会话会有效,关闭页面或浏览器后被清除

(2)存放数据的大小不同

Cookie 一般为4KB

localStorage 和 sessionStorage 一般为5MB

(3)与服务器端通信不同

Cookie 每次都会携带到HTTP头中,如果使用cookie保存过多数据会带来性能问题

localStorage 和 sessionStorage 仅在客户端(即浏览器)中保存,不参与和服务器的通信。

(4)易用性

Cookie 需要程序员自己来封装,原生的cookie接口不够友好

localStorage 和 sessionStorage 原生接口可以接受,可以封装来对Object和Array有更好的支持。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小猹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值