浏览器存储

浏览器存储

 

  1. Cookie

上面这张图,是cookie实际业务上最常用的一种业务场景。

这种应用场景呢,就是用cookie给服务端传递相关信息,让服务端来分别当前进行请求的是哪个客户端。

为什么要使用cookie来做这件事呢??

实际上,cookie是1993年诞生的,它诞生的目的呢,就是通过cookie,我们来区分http请求它的客户端的情况。因为对于http请求来说,它本身是无状态的,所谓的无状态就是:当我这次http请求结束之后,这个连接就关闭了。那么下一次我要发起同样的请求的时候,到达服务端,服务端不会知道这个请求和之前的某一个请求是来自同一个客户端。它不能跟踪http请求的会话,发生情况。也就是说,但我这个http请求关闭之后呢,不管以后哪一次http请求到达,都不知道它跟之前任何一个http的关联。这是http协议带来的一个特点

http协议本身是无状态的。

因为http请求无状态,所以需要cookie去维持客户端的状态。

 

那么在这种场景下,我们很难解决一个问题。

问题:我们的登录信息,用户信息维护的问题。

我们经常在一个pc网站上,去进行用户的一个登录操作。那么我们用户登录之后,我们如何始终在这个tag下去维护我们的用户信息呢。

Cookie用来维护客户端和浏览器之间一个状态的的标识。让服务端通过cookie知道http来自哪个客户端。 我就行进行相关客户端的登录状态的维护。因为我们登录信息都存储在cookie中。

 

Cookie方式:

 

方法一:用于浏览器端和服务器端的交互

 

首先呢,cookie它可以通过一种生成方式,就是 http response header中的set-cookie 这么一个http header 返回的。

当我客户端检测到我服务端http response header中有这么一个cookie的时候,它就会吧header中的cookie中的一些信息呢 种到我的浏览器客户端的cookie这么一个存储区域里。这个cookie 是由服务端来生成,由客户端来存储和维护的。

所以呢,这个客户端所携带的客户信息呢,实际上,是服务端完全知道,并且通知客户端,让客户端存下来。那么这样的话,我每次之后的请求,都携带服务端传递给客户端的这么一个标识的话,那么每次请求,服务端就知道当前来请求的http链接它到底是来自于哪个客户端了。

 

方法二:

Cookie的生成方式:客户端自身数据的存储

Js中可以通过document.Cookie可以读写cookie。这是作为浏览器存储相关的一个作用。

 

 

 

Cookie是有过期时间的。Expire

每个cookie是有过期时间的。但是对于浏览器存储,实际上没有必要设置这个过期时间。因为浏览器存储的话,我可以自己去控制浏览器信息相关的添加和删除。

过期时间这个概念呢,也是对于维护状态用到的一个东西。

 

 

Cookie存储的限制:

  1. cookie作为浏览器存储,是有大小限制的,大小4kb左右
  2. 需要设置过期时间 expire

 

 

Cookie作为存储的能力渐渐被localstorage所替代。

Cookie的设计初衷是维护客户端和服务端的交互。

 

 

Localstorage:

 

localStorage 一般用于存储信息。比如某个商品详情。 第一次进去的时候,会向后台发送请求,等待请求完成返回信息,在进行渲染页面,会导致渲染较慢,可能会白屏什么的。

那么我们可以使用localstorage,在第一次请求完毕之后,将信息存储起来,当第二次进入同一个商品详情的时候,直接读取localstorage里的信息,不用再次去向后台存储。

如果某个操作会导致页面数据显示的差别,可以将改变的信息对应存储中的信息进行更换即可。

sessionStorage:

 

sessionStorage和localstorage的区别:

 

seesionStorage是基于会话的存储。放浏览器之中的某个窗口关闭之后,这个sessionStorage也就被释放掉了。

 

 

indexedDB:

 

 

猜你喜欢

转载自blog.csdn.net/assassin_0302/article/details/86979873