考考你浏览器缓存有哪些,区别是什么?

菜园前端
• 阅读 444

原文链接:https://note.noxussj.top/?source=helloworld


浏览器缓存主要包含 cookie、 在 HTML5 新标准中新增了本地存储 localStorage 和会话存储 sessionStorage。

什么是 cookie?

cookie 是一些缓存数据,主要存储在你的电脑中。当你发起网络请求时也会携带当前域名端口下的 cookie 信息传输给后端。

默认情况下,没有设置过期时间,当浏览器关闭时 cookie 就会被删除(关闭当前选项卡不会删除)。

document.cookie = 'name=xiaoming' // 'name=xiaoming'
document.cookie = 'age=18' // 'name=xiaoming; age=18'
// Thu Jan 12 2023 17:22:34 GMT+0800 (中国标准时间)
const expires = new Date(new Date().getTime() + 1000 * 60 * 10)
document.cookie = 'class=A; expires= ' + expires
const cookie = document.cookie // 'name=xiaoming; age=18; class=A'

相当于把旧的 cookie 进行了删除,在创建新的 cookie

document.cookie = 'name=libai' // 'age=18; class=A; name=libai'

直接给 cookie 设置一个已过期的时间,那么关闭浏览器后则会被删除

document.cookie = 'class=A; expires= Thu Jan 01 1970 08:00:00 GMT+0800 (中国标准时间)'

localStorage

每个域名端口下都会存在一份独立的 localStorage 数据,它是没有过期时间的,只要你不手动清除,那么它会永远都在。localStorage 使用上会比 cookie 要简单。

创建 localStorage 属性

localStorage.setItem('name', 'xiaoming')

读取 localStorage 属性

localStorage.getItem('name') // 'xiaoming'

修改 localStorage 属性

localStorage.setItem('name', 'libai')

删除 localStorage 属性

localStorage.removeItem('name')

清空 localStorage 对象

localStorage.clear()

sessionStorage

每个域名端口下都会存在一份独立的 sessionStorage 数据,它是有过期时间的,当你关闭当前页面(包含浏览器选项卡)时,sessionStorage 缓存会被销毁。它的用法几乎和 localStorage 是相同的。

创建 sessionStorage 属性

sessionStorage.setItem('name', 'xiaoming')

读取 sessionStorage 属性

sessionStorage.getItem('name') // 'xiaoming'

修改 sessionStorage 属性

sessionStorage.setItem('name', 'libai')

删除 sessionStorage 属性

sessionStorage.removeItem('name')

清空 sessionStorage 对象

sessionStorage.clear()

以上三者的区别

存储大小

  • cookie:数据大小不能超过 4k
  • localStorage、sessionStorage:数据大小支持 5M 左右,不同浏览器存储大小不同

生命周期(有效时间)

  • cookie:需要设置有效期,过期后 cookie 就会销毁
  • localStorage:除非被手动清理,否则永久存在
  • sessionStorage:页面关闭(包括标签选项卡)后就会被销毁

存储形式

三者都是存储字符串类型,复杂对象可以采用 json 的 stringify 和 parse 方法来做处理

安全性

cookie:请求时一般会携带在 header 中

localStorage、sessionStorage:请求时不会携带

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
Django用户认证
COOKIE与SESSION概念cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生。cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这
Stella981 Stella981
3年前
Django中的session的使用
一、Session的概念cookie是在浏览器端保存键值对数据,而session是在服务器端保存键值对数据session的使用依赖cookie:在使用Session后,会在Cookie中存储一个sessionid的数据,每次请求时浏览器都会将这个数据发给服务器,服务器在接收到sess
Stella981 Stella981
3年前
Cookie,Session学习(java servlet编程)
Cookie问题:HTTP协议是没有记忆功能的,一次请求结束后,相关数据会被销毁。如果第二次的请求需要使用相同的请求数据怎么办呢?难道是让用户再次请求书写吗?为了解决这个问题,引入了Cookie技术;Cookie技术其实就是浏览器端实现的数据临时存储技术,保存一些必要的数据,当访问某些网页需要这些数据时,浏览器自动将数据加到HTTP请求
Easter79 Easter79
3年前
SpringBoot学习:整合shiro自动登录功能(rememberMe记住我功能)
首先在shiro配置类中注入rememberMe管理器!复制代码(https://oscimg.oschina.net/oscnet/675f5689159acfa2c39c91f4df40a00ce0f.gif)/cookie对象;rememberMeCookie()方法是设置Cookie的生成模
Stella981 Stella981
3年前
Django之cookie 和 session
一、1、cookie的由来!!!    由于HTTP协议是无状态的,既每一次的请求都是独立的,他不会因为你之前来过,就记住你,所以每次浏览器去访问服务器的时候,都是一个全新的过程,之前的数据也不会保留,所以为了解决这个问题,cookie诞生了。2、什么是cookie?    Cookie具体指的是一段小信息,他是服务器发送出来存储在浏览器一组
Stella981 Stella981
3年前
Django组件——cookie与session
Django组件——cookie与session<fontcolor00bff一、会话跟踪技术</font<fontcolorff7f501、什么是会话跟踪技术</font先了解一下什么是会话。可以把
Stella981 Stella981
3年前
Cookie学习笔记
会话的概念:打开浏览器,输入正确的URL访问服务器,期间浏览器向服务器请求资源,服务器给予资源响应,最后关闭浏览器,客户端和浏览器的连接断开。这一过程可理解为会话。Cookie入门:Cookie是在服务器创建,保存在客户端。Cookie会在客户端保存一些用户的信心,比如浏览信息。在客户端没有删除一个站点的Cookie情况下,在下一次在访问该站点
Stella981 Stella981
3年前
Http 缓存策略
1)浏览器缓存策略浏览器每次发起请求时,先在本地缓存中查找结果以及缓存标识,根据缓存标识来判断是否使用本地缓存。如果缓存有效,则使用本地缓存;否则,则向服务器发起请求并携带缓存标识。根据是否需向服务器发起HTTP请求,将缓存过程划分为两个部分:强制缓存和协商缓存,强缓优先于协商缓存。强缓存,服务器通知浏览器一个缓存时间,在
3A网络 3A网络
2年前
一文读懂浏览器存储与缓存机制
一文读懂浏览器存储与缓存机制浏览器存储CookieCookie是HTTP协议的一种无状态协议。当请求服务器时,HTTP请求都需要携带Cookie,用来验证用户身份。Cookie由服务端生成,存储在客户端,用来维持状态。通常Cookie由以下值构成:名称(name)值(value)域(Domain)值(value)路径(Path)