本文分为三大板块:  

  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中,毕竟前端的安全性这么低。只要打开控制台就可以任意的修改 Cookie、localStorage 和 sessionStorage的数据了。涉及到金钱或者其他比较重要的信息,还是要存在后台比较好。

cookie和localstorage sessionStorage的概念、区别、使用场景的更多相关文章

  1. js中cookie,localStorage(sessionStorage)的存取

    一.cookie (原生的不好用,自己简单封装) 1. 存cookie的方法: function setCookie(c_name,value,expiredays) { var exdate=new ...

  2. 本地存储 cookie,session,localstorage( 一)基本概念及原生API

    http://www.w3school.com.cn/html5/html_5_webstorage.asp http://adamed.iteye.com/blog/1698740 localSto ...

  3. cookie session localstorage sessionStorage区别

    cookie:http://www.cnblogs.com/Darren_code/archive/2011/11/24/Cookie.html 重要特点: 1.cookie 有大小设置,有过期时间设 ...

  4. 前端 JS,localStorage/sessionStorage、cookie 及 url 等实现前台数据共享、传输

    需求是这样的:需要统计用户公司某款产品用户的回馈情况,美工给的设计多个psd,每个页面里面都有一个选择题,让用户选择自己的答案,最后经过几次选择之后在最后一个页面统一提交到后台!所以这里引出的技术需求 ...

  5. cookie、localStorage、sessionStorage之间的区别

    sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求之间保存数据.有了本地数据,就可以避免数据在浏览器和服务器间不必 ...

  6. Cookie、session和localStorage、以及sessionStorage之间的区别

    一.Cookie.session和localStorage的区别 cookie的内容主要包括:名字.值.过期时间.路径和域.路径与域一起构成cookie的作用范围.若不设置时间,则表示这个cookie ...

  7. localstorage sessionstorage cookie的区别

    一.基本概念 Cookie cookie比较小,大小限制在4kb左右,是网景公司的前雇员 LouMontulli 在1993年3月的发明.它的主要用途有保存登录信息,比如你登录某个网站市场可以看到“记 ...

  8. Cookie、LocalStorage 与 SessionStorage的区别在哪里?

    基本概念 Cookie Cookie 是小甜饼的意思.顾名思义,cookie 确实非常小,它的大小限制为4KB左右.它的主要用途有保存登录信息,比如你登录某个网站市场可以看到“记住密码”,这通常就是通 ...

  9. 客户端 localStorage, sessionStorage, cookie 的区别

    SessionStorage, LocalStorage, Cookie这三者都可以被用来在浏览器端存储数据,而且都是字符串类型的键值对! 区别在于前两者属于WebStorage,创建它们的目的便是存 ...

随机推荐

  1. JS正则表达式从入门到入土(7)—— 分组

    分组 在使用正则的时候,有时候会想要匹配一串字符串连续出现多次的情况,比如:我想匹配字符串Byron连续出现3次的情况. 有些人会直接写: Byron{3} 但是,这种情况仅仅会匹配Byro加上三个n ...

  2. 此博客可能不再更新,往后博文将发布在 GitHub 中

    在 GitHub 上, 可以建立不同的仓库,显示分类可以更明确: 有不同分支,可以打很多次草稿: 用 markdown 语法来书写比较舒服(博客园也可以设置): 最主要的是 GitHub 装逼呀!!! ...

  3. WCF用户名密码验证方式

    WCF使用用户名密码验证 服务契约 namespace WCFUserNameConstract { [ServiceContract] public interface IWcfContract { ...

  4. MR案例:倒排索引

    1.map阶段:将单词和URI组成Key值(如“MapReduce :1.txt”),将词频作为value. 利用MR框架自带的Map端排序,将同一文档的相同单词的词频组成列表,传递给Combine过 ...

  5. Response attachment filename 中文乱码

    Response.setHeader("Content-Disposition", "attachment; filename=" + fileName+&qu ...

  6. Tensorflow平台快速搭建:Windows 7+TensorFlow 0.12.0

    Tensorflow平台快速搭建:Windows 7+TensorFlow 0.12.0 1.TensorFlow 0.12.0下载 2016年11月29日,距离TensorFlow 宣布开源刚刚过去 ...

  7. nginx配置Strict Transport Security

    一个网站接受一个HTTP的请求,然后跳转到HTTPS,用户可能在开始跳转前,通过没有加密的方式和服务器对话,比如,用户输入http://zt.test.com或者直接zt.test.com.这样存在中 ...

  8. 爬虫之动态HTML处理(Selenium与PhantomJS )网站模拟登录

    #coding=utf-8from selenium import webdriverfrom selenium.webdriver.common.keys import Keysimport tim ...

  9. Stm32F103面向对象编程之GPIO

    STM32F103 GPIO面向对象变成实例 创建一个GPIO对象 GpioClass gStateLed = NEW_GPIO(C, 0, GPIO_Mode_Out_PP); 初始化对象 Gpio ...

  10. Hue的安装与部署

    Hue的安装与部署 hadoop hue Hue 简介 Hue是一个开源的Apache Hadoop UI系统,最早是由Cloudera Desktop演化而来,由Cloudera贡献给开源社区,它是 ...