本地存储cookie,localStorage,sessionStorage
常见的前端存储有老朋友 cookie,短暂的 sessionStorage,和简单强大的localStorage
他们之间的区别有以下几点
1.. cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
2. cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
3. 数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
4. 作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。
下面开始介绍如何使用
cookie
以下是我封装好的cookie函数,需要的朋友自行复制
- //创建cookie
- function setCookie(name, val, n) {
- var oDate = new Date();
- oDate.setDate(oDate.getDate() + n);
- document.cookie = name + "=" + val + ";expires=" + oDate;
- }
- //获取cookie
- function getCookie(name) {
- var str = document.cookie;
- var arr = str.split("; ");
- for(var i = 0; i < arr.length; i++) {
- var str1 = arr[i]; //"a=1" "b=2" "c=3"
- var arr1 = str1.split("=");
- if(arr1[0] == name) {
- return arr1[1];
- }
- }
- }
- //删除cookie
- function removeCookie(name) {
- setCookie(name, 1, -1);
- }
使用也很简单,调用函数即可
- setCookie('age','13',1);
- setCookie('age1','12',1);
- setCookie('age2','11',1);
- console.log(getCookie("age1"));
- //removeCookie("age2");
可以看出,我创建了三个cookie值,分别是 age,age1,age2,值为 13,12,11,时间都为一天,路径为默认路径,这时,打开cookie即可看到我们存的三个值。
代码第五行,调用封装函数 getCookie(“age1”),可以在控制台,直接打印12。获取cookie值时,直接输入 name即可获取
代码第六行,调用封装函数 removeCookie(),直接 传参 name即可删除,需要删除的cookie值,当然也可以在浏览器中手动删除某一项,删除cookie我利用的是修改过期时间删除的方法,
需要注意的是我用的删除cookie是调用 创建函数 setCookie() ,把时间修改为-1.删除
localStorage
localStorage,使用方法比较简单,下面介绍使用
- localStorage.setItem("name","景天")
- //这只是简单的存一个键值对,如果想要存数组对象就需要格式转化
- //例如
- localStorage.setItem("msg",[{"name":"雪见","age":22},{"name":"重楼","age":500}])
这时,我们会发现 第一行代码很正常,
而第四行代码已经不能正常显示了
这就是格式的问题,我们就需要格式化
- localStorage.setItem("msg",JSON.stringify([{"name":"雪见","age":22},{"name":"重楼","age":500}]))
这时,我们就可以正常使用了
以上是存 localStorage。
取 localStorage,使用 localStorage.getItem()
- console.log(localStorage.getItem("msg"))
- //[{"name":"雪见","age":22},{"name":"重楼","age":500}]
- console.log(JSON.parse(localStorage.getItem("msg")))
- // (2)[{…}, {…}]
取的时候也需要格式转换,JSON.parse();
可以根据需要自行使用。
删除的方法也很简单
- //数据删除
- localStorage.removeItem("name")
//可以看到后台数据直接删除
sessionStorage
使用方法基本类似与 localStorage,只是存在时间长短的问题
两者不同在文章头部有项细介绍,在此处就不在测试
只需把 localStorage 改成 sessionStorage 即可
以上就是我对这三种存储的理解
本地存储cookie,localStorage,sessionStorage的更多相关文章
- H5新特性 本地存储---cookie localStorage sessionStorage
本地存储的作用 :避免登录网站时,用户在页面浏览时重复登录,也可以实现快速登录,一段时间内保存用户的登录效果,提高页面访问速率 在html5中提供三种数据持久化操作的方法: 1.cookie 可看作是 ...
- html5本地存储(localStorage)使用介绍
1.html5几种存储形式 本地存储(localStorage && sessionStorage) 离线缓存(application cache) indexedDB 和 webSQ ...
- web 本地存储 (localStorage、sessionStorage)
web 本地存储 (localStorage.sessionStorage,cookie) localStorage(长期储存):即使关闭浏览器数据也不会删除,除非使用localStorage.cle ...
- [web 前端] web本地存储(localStorage、sessionStorage)
cp from : https://blog.csdn.net/mjzhang1993/article/details/70820868 web 本地存储 (localStorage.sessionS ...
- web本地存储(localStorage、sessionStorage)
web 本地存储 (localStorage.sessionStorage) 说明 对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:l ...
- html5本地存储之localstorage 、本地数据库、sessionStorage简单使用示例
这篇文章主要介绍了html5本地存储的localstorage .本地数据库.sessionStorage简单使用示例,需要的朋友可以参考下 html5的一个非常cool的功能,就是web stora ...
- (转)HTML5开发学习(2):本地存储之localStorage 、sessionStorage、globalStorage
原文:http://www.cnblogs.com/xumingxiang/archive/2012/03/25/2416386.html HTML5开发学习(2):本地存储之localStorage ...
- Cookie localStorage sessionStorage
三者的异同 特性 Cookie localStorage sessionStorage 数据的生命期 可设置失效时间,默认是关闭浏览器后失效 除非被清除,否则永久保存 仅在当前会话下(tab标签页)有 ...
- 大家都能看得懂的源码 - 如何封装 cookie/localStorage/sessionStorage hook?
本文是深入浅出 ahooks 源码系列文章的第九篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 今天来看看 ahooks 是怎么封装 cookie/localSt ...
随机推荐
- websphere启动报:Could not resolve placeholder 'hibernate.hbm2ddl.auto' in string value "${hibernate.hbm2ddl.auto}"
websphere启动报/WEB-INF/applicationContext-orm- hibernate.xml]: Could not resolve placeholder 'hibernat ...
- koa 项目实战(三)创建测试接口和用户模型
1.创建测试接口,并引入用户模型 根目录/routes/api/users.js const Router = require('koa-router'); const router = new Ro ...
- Android中图片的三级缓存
为什么要使用三级缓存 如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了 假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量.在当前的状况下,对于非wifi ...
- (转)java8实现对象列表去重
java8实现列表去重,java8的stream和lambda的使用实例 通过普通的方式也可以达到去重的效果,但是借助java8新特性可以很方便的实现列表去重,测试demo如下 实体类: public ...
- Debian系统软件安装
查看已安装软件 dpkg -l | grep -i name apt-get remove name 建议用root安装,有一些工具,使用非root用户安装后,仍然不识别命令,可能跟权限有关. net ...
- matlab多图排列
代码如下: clear; img = imread('C:\\Users\\admin\\Desktop\\original_img3\\testimg\\messi.jpg'); subplot(2 ...
- 小程序入门 MQTT物联网协议 publish 和订阅subscribe onenet 阿里云 百度云 基于GPRS模块(SIM800C/SIM900A/SIM868等)和STM32主控芯片
本文基本公开了如何移植MQTT物联网协议到STM32平台上,并结合GPRS模块(SIM800C/SIM900A/SIM868等)实现publish和订阅topic从onenet,阿里云,百度云等.如果 ...
- 应用安全 - 工具|平台 - Elasticsearch- 漏洞 - 汇总
未授权访问 (1)/_cat/indices #Index个数查询 (2)/_mapping?pretty=true #type个数查询 (3)根据Index和type查询表数据 (4)/_river ...
- C++学习笔记-构造函数和析构函数
构造函数和析构函数是C++的重要组成部分,了解构造函数和析构函数有助于深入了解C++ 构造函数 构造函数产生的原因 在C++中,有时候需要在对象创建的时候初始化数据,如果采用普通函数的话,每次初始化都 ...
- C语言|作业07
一.本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://i-beta.cnblogs.com/posts/edit;postId=11811545 我在这个课程的 ...