SessionStorage, LocalStorage, Cookie这三者都可以被用来在浏览器端存储数据,而且都是字符串类型的键值对!

区别在于前两者属于WebStorage,创建它们的目的便是存储客户端数据。要保存必须域名是同源的。
而Cookie早在网景公司的浏览器中就开始支持,最初目的是为了保持HTTP的状态。
LocalStorage和SessionStorage都是本地存储,不会被发送到服务器上。

1. cookie
cookie是存储在客户端的小型文本文件;

浏览器怎么设置 cookie, 控制台 document.cookie='a=1', 那么同个域名下的多个浏览器标签页都会共用这个 cookie,
比如 www.xxx.com/(A页) 和 www.xxx.com/?act=bbb(B页); 先同时打开这2个标签页, 在A页面document.cookie='a=1', 那么B页也带了这个 cookie;

若此时在A页 控制台 document.cookie='a=8', 不用刷新 B页, 控制台输入document.cookie 也有 'a=8'; 刷新 A页 还是有 'a=8'; 关闭 A页 和 B页, 但是不关闭浏览器, 再打开 A页, 还是有 'a=8'; 直到整个浏览器都关闭了, 就没有 'a=8';

所以如果在浏览器端生成Cookie,默认是关闭浏览器后失效。若想在关闭浏览器以后不失效,可以设置一个过期时间, 代码如下:

var exp = new Date();
// 30 秒后过期
exp.setTime(exp.getTime() + 30 * 1000);
document.cookie='a=1;expires=' + exp.toGMTString();

那么关闭浏览器再打开, 则'a'还在, 但是过了 30秒, 'a' 就变成 null.

2. sessionStorage

若先打开2个标签页, A页和B页, A页控制台输入 sessionStorage.setItem('a', 1), 注意此时B页 输入sessionStorage.getItem('a') 值为null, 但是此时若从A页 跳转到C页(C 和 B 是带同一个URL的 不同标签页), 只有 C页带 'a', B页还是不带'a', 此时刷新B页 还是不带 'a';

总结起来就是, 必须是从A页 跳转的或新打开的标签页会带 'a';
若A页带'a', 则新标签页再打开一个A页 也会带'a';
若A页带'a', 地址栏输入C页 会带'a';(有点像 A页跳转过去)
若A页和B页都带'a', 关闭 A标签页, 再打开 A标签页不带 'a', 这时必须从 B页带过去。

关闭浏览器则会清除 'a', 并且不能像 cookie 一样设置过期时间;

3. localStorage
localStorage 和 Cookie 的表现形式一样, 若先打开A 和B 标签页, A 页 localStorage.setItem('a', 1), 则B页 localStorage.getItem('a') 也有 'a';

localStorage 永远都不会被删除, 除非 调用了 localStorage.removeItem('a'); 或者清空所有item localStorage.clear();

总结:

3者的浏览器支持

特性

Chrome

Firefox (Gecko)

Internet Explorer

Opera

Safari (WebKit)

localStorage

4

3.5

8

10.50

4

sessionStorage

5

2

8

10.50

4

3者的不同

特性

Cookie

localStorage

sessionStorage

数据的生命期

一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效

除非被清除,否则永久保存

仅在当前会话下有效,关闭页面或浏览器后被清除

存放数据大小

4K左右

一般为5MB

与服务器端通信

每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题

仅在客户端(即浏览器)中保存,不参与和服务器的通信

易用性

需要程序员自己封装,源生的Cookie接口不友好

源生接口可以接受,亦可再次封装来对Object和Array有更好的支持

 

cookie 封装好的设置代码:

var CookieUtil = {get: function (name){var cookieName = encodeURIComponent(name) + "=",cookieStart = document.cookie.indexOf(cookieName),cookieValue = null;if (cookieStart > -1){var cookieEnd = document.cookie.indexOf(";", cookieStart)if (cookieEnd == -1){cookieEnd = document.cookie.length;}cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));} return cookieValue;},set: function (name, value, expires, path, domain, secure) {var cookieText = encodeURIComponent(name) + "=" + encodeURIComponent(value);if (expires instanceof Date) {cookieText += "; expires=" + expires.toGMTString();}if (path) {cookieText += "; path=" + path;}if (domain) {cookieText += "; domain=" + domain;}if (secure) {cookieText += "; secure";}document.cookie = cookieText;},unset: function (name, path, domain, secure){this.set(name, "", new Date(0), path, domain, secure);}};

参考地址:

http://jerryzou.com/posts/cookie-and-web-storage/

转载于:https://www.cnblogs.com/zhengming2016/p/6748155.html

客户端 localStorage, sessionStorage, cookie 的区别相关推荐

  1. 浏览器缓存 HTTP缓存-CDN缓存-localstorage/sessionstorage/cookie

    文章目录 浏览器缓存 面试题 概述 HTTP缓存 -提高二次请求响应速度 HTTP的缓存控制,如何设置缓存策略 CDN缓存 -提高首次请求资源的响应速度 CDN的核心功能 CDN的基本原理 local ...

  2. 浅谈 sessionStorage、localStorage、cookie 的区别以及使用

    1.sessionStorage.localStorage.cookie 之间的区别 相同点 cookie 和 webStorage 都是用来存储客户端的一些信息 不同点 localStorage l ...

  3. 服务器端Session和客户端Session, 以及cookie的区别

    Session其实分为客户端Session和服务器端Session. 当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识.SessionID是一个由24个字符组 ...

  4. 服务器端Session、客户端Session和Cookie的区别

    1.Session其实分为客户端Session和服务器端Session. 当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识.SessionID是一个由24个字 ...

  5. Cookie、session以及localStorage与sessionStorage之间的区别

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

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

    转载自https://www.cnblogs.com/zr123/p/8086525.html Cookie.session和localStorage.以及sessionStorage之间的区别 一. ...

  7. sessionStorage localStorage cookie的区别

    sessionStorage localStorage cookie的区别 基本概念 cookie:是网景公司的前雇员在1993年发明.它的主要用于保存登陆信息,比如登陆某个网站市场可以看到'记住密码 ...

  8. sessionStorage 、localStorage 和 cookie 之间的区别(转)

    essionStorage .localStorage 和 cookie 之间的区别(转) 2012-05-08 14:29:19|  分类: HTML5CSS3WEBAPP|举报|字号 订阅 ses ...

  9. 本地存储-cookie|localStorage|sessionStorage|indexedDB

    本地存储 本地存储 cookie 如何工作 问题 cookie标准限制 属性 expires|max-age domain&path secure HttpOnly 设置cookie 服务端设 ...

最新文章

  1. python使用imbalanced-learn的InstanceHardnessThreshold方法进行下采样处理数据不平衡问题
  2. AI每日精选:新加坡批准AI血管超声扫描;蔚来硅谷裁员141人
  3. php 面向对象学习
  4. 短视频的生成,不要在技术上想当然
  5. iscsi发起程序找不到目标_3分钟学会程序员“面试回答规范”,不怕找不到工作的里面请...
  6. ansible的安装和ansible的模板
  7. iOS 关于UITableView的黑科技
  8. Beyond Saliency map
  9. DELL服务器双网卡绑定方法
  10. 阿里云 Code Pipeline 体验
  11. 图像处理农业应用sci_SCI/SSCI期刊征稿信息3月8日更新
  12. VC++ 查看系统进程,获取进程关联的DLL列表
  13. 关于电脑是否需要安装杀毒软件的解答
  14. 程序猿还在拿死工资?还不知道怎么利用技术挣钱?——python量化实践
  15. java实现ip首部校验和算法,理解传输层中UDP协议首部校验和以及校验和计算方法的Java实现...
  16. pcs增加mysql资源_PCS集群的一些命令总结!非常好!
  17. 一文带你走进Docker
  18. j计算机专业毕业论文摘要,★计算机毕业论文摘要范文计算机毕业论文摘要写(6页)-原创力文档...
  19. 关于作Presentation
  20. BIOS 选项中英文对照

热门文章

  1. 验证数字的正则表达式集
  2. delphi variant和stream相互转换的函数
  3. mongdb安装使用
  4. Drainage Ditches
  5. ASP.NET 5 DNX SDK删除旧版本
  6. innodb表空间结构
  7. CSS继承选择器与包含选择器的比较
  8. 用WinInet开发Internet客户端应用指南
  9. 在寻找SD-WAN供应商之前,你应该考虑啥呢?
  10. RxJava 将一组数据每隔一定时间发送出来