首页 > 其他分享 >浅谈cookie、sessionStorage、localStorage的生命周期

浅谈cookie、sessionStorage、localStorage的生命周期

时间:2022-11-25 10:57:44浏览次数:52  
标签:浅谈 sessionStorage localStorage csdn 标签 cookie 页面

最近忙于毕业设计,要写一个用户行为分析平台,需要合理使用这三种技术来追踪用户行为,于是查询相关资料并做了些小测试来熟悉这三种技术。我将自己学习内容和使用时遇到的一些小细节在此做个总结。

众所周知,sessionStorage和localStorage是H5的新特性,和cookie一样都可以在客户端存储一些数据,他们的区别在于:

localStorage的生命周期是永久的,如果不主动使用以下方法清除,存储的数据将一直被保存
localStorage.removeItem('key');
localStorage.clear(); // 清除全部
sessionStorage顾名思义周期是一个session,窗口关闭后存储的数据将被清空。可以理解为生命周期在一个标签页内,只要这个标签页不关闭,无论你刷新了这个页面,还是在里面做了跳转,sessionStorage都不会清除
cookie的大小限制为4KB左右,会默认随着请求发送到后端,如果不设置过期时间,cookie默认的生命周期是到浏览器关闭,注意是浏览器关闭而不是页面的关闭,因此在一个浏览器未关闭的情况下,如果我们关闭了页面在再重新打开,之前的cookie仍然存在。
在了解了上面我们随处都可以找到的总结后,我再说一些我实际遇到的小细节。

同源策略
以csdn博客首页blog.csdn.net为例,我们打开浏览器控制台

如下图我们使用localStorage存储了一个 a : '1' 的键值对,这时我们随便打开一篇博客进入到同域的另一个标签页,为什么要同域,因为无论是cookie还是sessionStorage和localStorage,他们都受同源策略限制,都如同ajax那样不能跨域通信。

 

 

不同域的页面

如上图,我们在页面 blog.csdn.net(页面1)中使用localStorage存入了一条数据,在同域的另一个页面 blog.csdn.net/xxx(页面2)中可以成功获取,而在不同域的页面download.csdn.net却获取不到,即便是主域相同的不同子域。同理,cookie和sessionStorage也是如此。

作用域
然后我们就可以 搞事 测试了,首先我们将页面1里localStrorage的a的值改为2,发现页面2里的a也随之更改为了2,可以得知

不同页面的localStorage共享一个作用域,能互相影响。

 

 


sessionStorage呢?我们来试试,我们首先关闭原先的页面2,并随便打开一篇博客在页面1里设置了sessionStorage,然后重新随便打开一篇博客进入页面2,可以成功获取到b : '1'

 

 

接着我们修改页面1里的b,如下图,我们会发现,页面2里的b并没有改变,这个应该是合理的结果,因为我们之前说到sessionStorage的生命周期在一个标签页内,所有只有作用域在一个标签内才不会影响到其他标签页。而从页面1新建标签页打开页面2时,会复制一份sessionStorage给到页面2,这也就是为什么在一开始页面2可以获取到页面1的sessionStorage。而localStorage作用域是共享的,所以也就不存在复制过程。

不同页面的sessionStorage有独立的作用域,互不影响。跳转页面时会复制一份sessionStorage。

 

 

 

再做个钻牛角尖的测试:

还是以csdn的博客首页 blog.csdn.net (页面1)为例,设置sessionStorage c :'1',然后点击左侧关注按钮会在当前标签页内跳转到页面blog.csdn.net/nav/watchers(页面2),不出所料的可以得到 c : '1'

 

 

接着我们在页面2里更改sessionStorage c : '2',然后点击后退按钮回到原来的页面1,我们发现,sessionStorage也被改变了,这是因为尽管他们属于不同的页面,但由于后退其实相当于在这个标签页里面重新打开了原先的页面,所有也会有一个复制过程,看上去就像原页面的sessionStorage被改变了一样。

 

标签:浅谈,sessionStorage,localStorage,csdn,标签,cookie,页面
From: https://www.cnblogs.com/itjeff/p/16924429.html

相关文章

  • Selenium4+Python3系列(八) - Cookie、截图、单选框及复选框处理、富文本框、日历控件操
    我所在的城市昨天出了近20+的阳性案例,但这丝毫没有“影响”到996的工作时间,当然,也没有影响到我想继续更新文章的决心。一、cookie常用操作入门上一篇有写过关于cookie的......
  • 浅谈网络最大流
    网络流看着很麻烦,实际搞清楚后就只剩建图了,主要是要先搞清定义(知晓定义的大佬请自行跳过),然后搞定模板,最后练一下建图   有向边(在网络流中叫弧)起点为u,终点为v且......
  • 浅谈mysql高性能调优(一)
    mysql的问题介绍(一)mysql索引的实现原理和数据结构mysql索引设计的技巧mysql聚簇索引和非聚簇索引的区别mysql索引的中级调优方案mysql分布式集群的设计原则mysql如何实现高......
  • 浅谈web性能优化(一)
    压力测试        在浅谈性能优化之前呢,先介绍一下压力测试。项目在上生产环境之前呢,需要先进行压力测试,模拟并发,看看系统的吞吐量大概是多少,告知运维人员的系统吞吐......
  • Himi浅谈游戏开发de自学历程!(仅供参考)
    ​​ 李华明Himi ​​​原创,转载务必在明显处注明:很多群友进群之后都会问我如何自学;那么今天就专门写个博文说一下,供各位童鞋交流和学习;大家先来看一段我每天时间安排......
  • 浅谈电能管理系统在火力发电厂中的应用
    陈盼安科瑞电气股份有限公司 上海嘉定 201801 摘要:为管控火力发电厂自用电能,降低企业运行成本,通过电能采集技术、信息技术与节能分析理论的融合,进行火电厂电能精细化管......
  • 浅谈高校宿舍水电管理及解决方案
    陈盼安科瑞电气股份有限公司上海嘉定201801摘  要:大学生在校期间的主要活动范围集中于高校宿舍,高校宿舍水电管理工作是保障高校宿舍管理有序开展的基础。在高校宿舍水......
  • 浅谈智慧电能管理系统的设计与应用方案
    陈盼                                   安科瑞电气股份有限公司 上海嘉定 201801 摘要:随着......
  • 浅谈物联网技术在公共建筑的能耗检测系统中的设计应用
    陈盼安科瑞电气股份有限公司上海嘉定201801引言   虽然我国建筑业取得了突破性进展,但建筑耗能却日益增加,并且已经发展成为社会热点问题。同时随着数字化技术的进步,......
  • 浅谈消防设备电源监控系统在化工厂房设置的必要性
    陈盼安科瑞电气股份有限公司上海嘉定 201801摘要:目前,我国的现代工业获得了不断进步,在对产品的质量和生产效率进行控制的同时,也加强了安全控制。在建筑化工厂房设置消防设......