session,cookie,sessionStorage,localStorage浏览器的缓存机制提供了在客户端存储用户数据的能力,通过cookies、session等方式与服务端进行数据交互.Cookie通常被称为甜点,作为缓存数据存储在客户端(浏览器端)。Cookie是服务器发送给客户端的特殊信息。cookie以文本的形式保存在客户端,每次请求都会带上。服务端在第一次发送响应头信息中将cookie发送给客户端,客户端每次访问服务端都会带上这个cookie;有一个有趣的例子可以很好地解释cookie。一台电视,每次坏了,你得拿电视去专卖店修,因为专卖店会认有特殊标志的电视,认不出来人。sessioncookie可以认为是一种特殊的cookie,我们可以接着前面的例子,在前面的例子中,专卖店只识别特定的电视,session相当于你在专卖店注册了一张会员卡。当你去专卖店,专卖店看到你手上的会员卡,根据会员卡信息来判断顾客信息身份,cookie和session最大的区别是cookie数据信息是保存在客户端的,每次客户端访问服务器,客户端会发送信息给服务器完成验证,浪费带宽,而session是在服务器端存储数据信息,每次访问服务器,客户端命令发送一个简单的标志信息到服务器,服务器根据这个标志信息完成验证,更加安全。当然它们也有一定的优缺点cookvssession存储大小:cookie:单个cookie保存的数据不能超过4kb;会话大小没有限制。安全:cookie:针对cookie的攻击:cookie欺骗、cookie拦截;session安全性大于cookie缺点:cookie:(1)大小有限制(2)用户可以操作(禁用)cookie,使功能受限(3)安全性低(4)有些状态不能保存在客户端。(5)每次访问都会向服务器发送Cookies,浪费带宽。(6)cookie数据有路径(path)的概念,可以限制cookie只属于某个路径。session:(1)session中保存的东西越多,在服务器上占用的内存就越多。对于在线用户较多的网站,服务器的内存压力会更大。(2)依赖cookies(sessionID保存在cookies中)。如果禁用cookie,则必须使用URL重写,这是不安全的。(3)创建Session变量非常随意,随时可以调用,不需要开发人员精确。因此,处理过程中过度使用会话变量会使代码不可读且难以维护。sessionStorageVSlocalStorage自从HTML5标准出现以来,本地化存储一时间成为热门话题。在HTML5之初,本地存储有两种方式:webStorage和webSQL。由于webSQL的实现基于SQLite,更倾向于DataBase方向,而W3C在2011年11月正式宣布不再维护webSQL规范。因此,目前我们常说的HTML5本地存储指的是webStorage。webStoragewebStorage是HTML5引入的一个重要功能,在前端开发过程中经常用到。它可以在客户端本地存储数据,类似于cookies,但只是存储在本地,两者都只在客户端可用。它保存在终端(即浏览器)中,不参与与服务器的通信,但其功能比cookie强大得多。cookie的大小只有4Kb左右(不同的浏览器大小不同),而webStorage的大小是5MB。其API提供了以下方法:setItem(key,value)——保存数据,以键值对的形式存储信息。getItem(key)——获取数据,传入key值,即可获取对应的值。removeItem(key)——删除单个item,根据key值移除对应的信息。clear()——删除所有数据key(index)——获取一个索引的key作用域不同,sessionStorage在不同浏览器窗口不共享,即使是同一个页面,在同一个页面也只保存一次-原始接口;localStorage在所有同源窗口中共享;数据的有效期不同,sessionStorage:只在当前浏览器窗口关闭前有效,自然不可能持久化;localStorage:始终有效,窗口或浏览器关闭后保存,因此用作持久化数据,即sessionStorage是页面级别的,更适合页面应用,而localStorage是浏览器级别的
