cookie和localstorage sessionStorage的概念、区别、使用场景
本文分为三大板块:
1 webStorage的概念
2 cookie/localStorage/sessionStorage的介绍
3 三者之间的共同点和区别
**所有代码引用均来自
作者:OBKoro1
链接:https://juejin.im/post/5a191c47f265da43111fe859
来源:掘金
首先要明确一个概念 webStorage
webStorage:是h5提供的两种在web请求之间保存数据,有了本地数据就可以避免数据在浏览器和服务器之间不必要地来回传递。
它的好处是:
1 减少网络流量,一旦保存在本地以后就可以避免再向服务器请求数据了
2 性能好 从本地读取数据比从服务器获取快得多,加上浏览器有缓存几乎可以立即显示
使用场景:
从安全性上来说,每次http请求都会携带cookie,这样无形中浪费了网络资源,所以如非必要不用cookie。此外cookie还需要指定作用于,不可以跨域调用,限制比较多,但是用来识别用户登录,还是十分方便的。针对登录过的用户,服务器端会在登录时注入一段加密过的 唯一辨识单一用户的辨识码,下次只需要读取这个值就可以判断当前用户是否登录了
webStorage储存空间更大,而且数据储存后仅仅在本地,不会与服务器发生交互,因此不会浪费网络流量。并且有独立储存空间。具体细分的话,local接替了cookie管理购物车的工作,也能胜任其他工作,比如h5小游戏经常会产生一些本地数据,用local储存比较合适
session的话,有时候遇到一些内容很多的表单,为了优化用户体验,我们会把表单页面拆分成多个子页面(比如注册流程),这种情况就可以使用session了。
兼容性:
localStorage/sessionStorage IE8以上都支持,如果要兼容到IE6,就需要userData来储存
基本概念
cookie:大小限制在4kb左右,主要用途在于保存登录信息,比如某些网站的记住密码功能,保存在本地,生命周期有限制,可手动清除。
它的主要内容包括 名字、值、过期时间,路径与域一起构成cookie的作用范围,若不设置时间,默认关闭窗口后cookie消失,这种生命周期的cookie被称为会话cookie。
使用方式:
保存cookie值:
var dataCookie='110';
document.cookie = 'token' + "=" +dataCookie;
获取指定名称的cookie值:
function getCookie(name) { //获取指定名称的cookie值
// (^| )name=([^;]*)(;|$),match[0]为与整个正则表达式匹配的字符串,match[i]为正则表达式捕获数组相匹配的数组;
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) {
console.log(arr);
return unescape(arr[2]);
}
return null;
}
var cookieData=getCookie('token'); //cookie赋值给变量。
localStorage:h5新加入的技术,兼容性较好,被IE8+浏览器支持,保存周期较长,可以保存5mb的信息,用于持久化本地储存,除非手动删除数据,不然是不会失效的。
使用方式:
var name='sessionData';
var num=120;
sessionStorage.setItem(name,num);//存储数据
sessionStorage.setItem('value2',119);
let dataAll=sessionStorage.valueOf();//获取全部数据
console.log(dataAll,'获取全部数据');
var dataSession=sessionStorage.getItem(name);//获取指定键名数据
var dataSession2=sessionStorage.sessionData;//sessionStorage是js对象,也可以使用key的方式来获取值 console.log(dataSession,dataSession2,'获取指定键名数据');
sessionStorage.removeItem(name); //删除指定键名数据
console.log(dataAll,'获取全部数据1');
sessionStorage.clear();//清空缓存数据:localStorage.clear();
console.log(dataAll,'获取全部数据2');
sessionStorage:与上一个接口类似,但是保存数据的生命周期不同,仅在当前网页会话下有效,关闭页面或浏览器后就会被清除。
这个很有意思,只要浏览器或页面没关闭,刷新页面或者进入同源的另一个页面,数据仍然存在。同时打开同一页面的不同窗口,它的对象也是不同的。
说了这么多,来看一下总结性的三者的异同吧
| 特性 | cookie | localStorage |
sessionStorage |
| 生命周期 | 可设置失效时间,默认是关闭浏览器后失效 | 除非被清除,否则永久保存 | 仅在当前会话下有效,关闭页面或浏览器后被清除 |
| 存放数据大小 | 4kb | 一般为5MB | 一般为5MB |
| HTTP请求 |
每次都会携带在http请求头中,如果使用cookie保存过多数据会产生 性能问题 |
仅在客户端(即浏览器)中保存,不参与和服务器的通信 | 仅在客户端(即浏览器)中保存,不参与和服务器的通信 |
| 易用性 | 需要程序员自己封装,源生的Cookie接口不友好 | 源生接口可以接受,亦可再次封装来对Object和Array有更好的支持 | 源生接口可以接受,亦可再次封装来对Object和Array有更好的支持 |
查看数据存放处:

cookie和localstorage sessionStorage的概念、区别、使用场景的更多相关文章
- js中cookie,localStorage(sessionStorage)的存取
一.cookie (原生的不好用,自己简单封装) 1. 存cookie的方法: function setCookie(c_name,value,expiredays) { var exdate=new ...
- 本地存储 cookie,session,localstorage( 一)基本概念及原生API
http://www.w3school.com.cn/html5/html_5_webstorage.asp http://adamed.iteye.com/blog/1698740 localSto ...
- cookie session localstorage sessionStorage区别
cookie:http://www.cnblogs.com/Darren_code/archive/2011/11/24/Cookie.html 重要特点: 1.cookie 有大小设置,有过期时间设 ...
- 前端 JS,localStorage/sessionStorage、cookie 及 url 等实现前台数据共享、传输
需求是这样的:需要统计用户公司某款产品用户的回馈情况,美工给的设计多个psd,每个页面里面都有一个选择题,让用户选择自己的答案,最后经过几次选择之后在最后一个页面统一提交到后台!所以这里引出的技术需求 ...
- cookie、localStorage、sessionStorage之间的区别
sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求之间保存数据.有了本地数据,就可以避免数据在浏览器和服务器间不必 ...
- Cookie、session和localStorage、以及sessionStorage之间的区别
一.Cookie.session和localStorage的区别 cookie的内容主要包括:名字.值.过期时间.路径和域.路径与域一起构成cookie的作用范围.若不设置时间,则表示这个cookie ...
- localstorage sessionstorage cookie的区别
一.基本概念 Cookie cookie比较小,大小限制在4kb左右,是网景公司的前雇员 LouMontulli 在1993年3月的发明.它的主要用途有保存登录信息,比如你登录某个网站市场可以看到“记 ...
- Cookie、LocalStorage 与 SessionStorage的区别在哪里?
基本概念 Cookie Cookie 是小甜饼的意思.顾名思义,cookie 确实非常小,它的大小限制为4KB左右.它的主要用途有保存登录信息,比如你登录某个网站市场可以看到“记住密码”,这通常就是通 ...
- 客户端 localStorage, sessionStorage, cookie 的区别
SessionStorage, LocalStorage, Cookie这三者都可以被用来在浏览器端存储数据,而且都是字符串类型的键值对! 区别在于前两者属于WebStorage,创建它们的目的便是存 ...
随机推荐
- hdu6121 Build a tree
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6121 题面: Build a tree Time Limit: 2000/1000 MS (J ...
- 安卓 和 IOS 的icon 尺寸
安卓 36*36 48*48 72*72 96*96 IOS Icon.png – 57×57 iPhone (ios5/6) Icon@2x.png – 114×114 iPhone Retina ...
- 【转】使用DataConnectionDialog在运行时设置数据源连接字符串
介绍: DataConnectionDialog 类: 打开“数据连接”对话框,获取用户选择的数据连接信息. 命名空间为:Microsoft.Data.ConnectionUI 所在程序集:Micro ...
- 【转】C#操作xml
XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖于内 ...
- 对称加密与非对称加密,以及RSA的原理
一 , 概述 在现代密码学诞生以前,就已经有很多的加密方法了.例如,最古老的斯巴达加密棒,广泛应用于公元前7世纪的古希腊.16世纪意大利数学家卡尔达诺发明的栅格密码,基于单表代换的凯撒密码.猪圈密码, ...
- [leetcode刷题笔记]Implement Trie (Prefix Tree)
题目链接 一A,开森- ac代码: class TrieNode { // Initialize your data structure here. char content; boolean isW ...
- 【c++ primer, 5e】特殊用途语言特性
[默认实参] 1.注意点:函数的默认实参可以在函数的声明中添加,但是后续声明只能添加默认参数而不能改变先前声明的默认参数.(函数的声明通常是定义在头文件上的,多次声明同一个函数是合法的) 2.默认实参 ...
- ThinkPHP5显示数据库字段内容
1.在application文件夹下面的config.php中打开DEBUG. 2.修改tp5/application/index/controller/Index.php内容. <?php n ...
- Hive常见问题
1.HQL是否区分大小写 不区分 hive> select AGE from default.studeNT; --不区分大小写,即使是表中字段 2.查看创建表过程 show create ta ...
- Hive查询Join
Select a.val,b.val From a [Left|Right|Full Outer] Join b On (a.key==b.key); 现有两张表:sales 列出了人名及其所购商品的 ...