由于年前辞了自己的工作,年后又开始重新找工作,参加了好几次面试,居然都遇到了同样的面试题:sessionstorage,localstorage和cookie之间的是区别?

当然,在面试的时候答的也不是很完善,所以想整理一下,以便后续面试中遇到。

区别:

1,cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。

2,存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。

3,数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。

4,作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。

在服务器端存储数据经常用session,所以经常也遇到这样的问题:cookie 和session 的区别?

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
   考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
   考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

知道这些区别以后,还得知道他们的用法:

cookie的用法:

在这里我们使用jquery封装的方法。所以先得引入两个js

首先包含jQuery的库文件,在后面包含 jquery.cookie.js 的库文件。

<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>

<script type="text/javascript" src="js/jquery.cookie.js"></script>

使用方法

创建一个会话cookie:

$.cookie(‘cookieName’,'cookieValue’);

注:当没有指明cookie时间时,所创建的cookie有效期默认到用户浏览器关闭止,故被称为会话cookie。

创建一个持久cookie:

$.cookie(‘cookieName’,'cookieValue’,{expires:7});

注:当指明时间时,故称为持久cookie,并且有效时间为天。

创建一个持久并带有效路径的cookie:

$.cookie(‘cookieName’,'cookieValue’,{expires:7,path:’/'});

注:如果不设置有效路径,在默认情况下,只能在cookie设置当前页面读取该cookie,cookie的路径用于设置能够读取cookie的顶级目录。

创建一个持久并带有效路径和域名的cookie:

$.cookie(‘cookieName’,'cookieValue’,{expires:7,path:’/',domain: ‘chuhoo.com’,secure: false,raw:false});

注:domain:创建cookie所在网页所拥有的域名;secure:默认是false,如果为true,cookie的传输协议需为https;raw:默认为false,读取和写入时候自动进行编码和解码(使用encodeURIComponent编码,使用decodeURIComponent解码),关闭这个功能,请设置为true。

4.读取cookie:

$.cookie('the_cookie'); // cookie存在 => 'the_value'

$.cookie('not_existing'); // cookie不存在 => null

5.删除cookie,通过传递null作为cookie的值即可:

$.cookie('the_cookie', null);

localStorage和sessionStorage的用法

1,保存数据:localStorage.setItem(key,value);

sessionStorage.setItem("key", "value");
localStorage.setItem("site", "js8.in");

2,读取数据:localStorage.getItem(key) ;

var value = sessionStorage.getItem("key"); 
var site = localStorage.getItem("site");

3,删除数据:删除数据:localStorage.removeItem(key)

sessionStorage.removeItem("key"); 
localStorage.removeItem("site");

4,clear清除所有的key/value:clear();

sessionStorage.clear(); 
localStorage.clear();

5,获取localStorage的属性名称(键名称):localStorage.key(index)。

6,获取localStorage中保存的键值对的数量:localStorage.length。

												

最新文章

  1. C#开源日志Nlog入门
  2. Windows下编译objective-C
  3. Volley Get Post 方法
  4. leetcode 1
  5. winform 批量导入本地sql文件,批量导入mdb(access)文件到sqlserver
  6. Classpath entry org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER will not be exported
  7. Java基础知识强化39:StringBuffer类之StringBuffer的删除功能
  8. css样式的部分拓展, NuMber对象、 BoM、 DoM对象的模型的间述,ing...
  9. class类的初始化
  10. 调用Bytom Chrome插件钱包开发Dapp
  11. 请求转发和URL重定向的原理和区别
  12. C语言的“编译、链接”
  13. Class实例在堆中还是方法区中?
  14. JS学习笔记Day1
  15. Linux中rm命令详解
  16. IQC来料检验报表
  17. 不同路径 II
  18. switch case 变量初始化问题
  19. 使用VBS发邮件
  20. hdu2149巴什博弈输出

热门文章

  1. “canvas画布仿window系统自带画图软件&quot;项目的思考
  2. &lt;Natural Language Processing with Python&gt;学习笔记一
  3. Vue.js使用前
  4. iOS开源库--最全的整理 分类: ios相关 2015-04-08 09:20 486人阅读 评论(0) 收藏
  5. .net面试题【持续更新.....】
  6. Unity3D ——强大的跨平台3D游戏开发工具(三)
  7. Android Studio文件目录介绍
  8. Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败 及sql2008外围服务器
  9. tomcat 修改网站路径(Java之负基础实战)
  10. permutation test