本地缓存和服务器缓存的区别

一、cookie

  cookie存在于浏览器端,是客户端保存用户信息的一种机制,用来记录用户的一些信息。是经过扩展HTTP协议来实现的,服务器经过在HTTP的响应头加上一行特殊的指示(set-cookie)以提示浏览器按照指示生成对应的cookie。主要用于如下三个方面。html

  • 一、会话状态管理(保存用户登陆状态等须要记录的信息)
  • 二、个性化设置(用户自定义主题、设置等)
  • 三、浏览器行为跟踪(跟踪分析用户行为)

cookie的原理:html5

  • 一、网络服务器用HTTP头想客户端发送cookies,在客户端,浏览器解析这cookies并将它们保存为一个文件。
  • 二、当客户端向服务器请求数据时,会自动带上cookie发送到服务器。

cookie的存活时间程序员

  cookie的内容包括:名字、值、过时时间、路径和域。路径和域一块儿构成cookie的做用范围。若是不设置过时时间,则表示该cookie的生命周期为浏览器会话期间,关闭浏览器窗口,cookie就消失,通常保存在内存中(会话cookie),若是设置了过时时间,该cookie则会被保存到硬盘里(硬盘cookie)。数据库

二、sessionStorage

  客户端的存储,基于html5,本地存储。能够将数据在当前会话中保存下来。刷新页面数据依然存在,可是关闭页面后,sessionStorage中的数据就会被清空。跨域

三、localStorage

  是HTML5标准中新添加的技术。本地存储,存储在本地硬盘。除非手动清除,不然永久保存。浏览器

四、Cookie, localStorage 与 sessionStorage的区别

  • 一、数据的周期生命   cookie可设置失效时间,默认是关闭浏览器后失效。   localStorage除非被手动清除,不然永久保存。   sessionStorage仅在当前会话下有效,关闭页面或浏览器后被清除。
  • 二、存放数据大小   单个cookie通常4k左右。localStorage和sessionStorage通常5M左右。
  • 三、与服务器通讯   cookie每次都会携带在HTTP头中,若是使用cookie保存过多数据会带来性能问题。   localStorage和sessionStorage仅在客户端(即浏览器)中保存,不参与和服务器的通讯
  • 四、易用性   cookie须要程序员本身封装,源生的Cookie接口不友好。localStorage和sessionStorage都有封装好的接口。

五、session

  session存在于服务器端,依赖于cookie(cookie能够被认为的禁止,因此有其余机制能够在cookie被禁用时,仍然可以把sessionId传递到服务器)。是服务端保存的一个数据结构,用来跟踪用户的状态。能够保存在内存、数据库和文件中。
服务器

session的原理:cookie

  • 一、用户第一次请求服务器的时候,服务器根据用户提交的相关信息,建立一个对应的session对象,并向客户端响应了一个cookie,cookie里面保存了sessionId,这个时候会话才开始,(关闭浏览器会话也不会结束)并根据sessionId在session池中寻找有没有该session,没有则将之添加到session池。(有一个默认存放时间,被取出时会从新设置默认存放时间)。
  • 二、用户第二次请求时,请求会自动判断此域名下是否存在 Cookie 信息,若是存在会将cookie信息也发送给服务器。服务器根据客户端中的cookie中的sessionId去session池中寻找会话。若是找到session证实该用户已经登陆而且能够执行后面的操做。

cookie被禁用时的处理网络

  • 一、URL重写,把sessionId直接附加在URL路径的后面。
  • 二、表单隐藏域(表单隐藏字段type="hidden"),服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时可以把sessionId传递回服务器。

session会话结束的两种状况:session

  • 一、服务器端的session超时。
  • 二、用户将客户端的cookie给清除了(session依赖cookie)。

六、cookie和session的区别?

  • 一、存取方式的不一样

  cookie中只能保存ASCII字符串,若是须要存取Unicode字符或者二进制数据,须要先进行转码。
  session可以存取任何类型的数据,包括但不限于String、Integer、List、Map等。

  • 二、隐私策略的不一样

  cookie存储在客户端中,对客户是可见的,客户端的一些程序可能会窥探、复制以致修正cookie中的内容。
  session存储在服务器上,对客户是透明的,不存在敏感信息泄露的风险。

  • 三、有效期上的不一样

  cookie能够设置过时时间来保存用户信息在客户端保存的期限。
  session依赖cookie,一旦cookie被清除,session就会失效。或者当客户端关闭会话,session超时失效致使会话结束。

  • 四、服务器压力的不一样

  cookie保管在客户端,不占用服务器资源。
  session是保管在服务器端的,每一个用户都会产生一个session。加入并发的用户很是多,会产生大量的session,消耗大量的内存。

  • 五、浏览器支持的不一样

  cookie是须要客户端支持的。假如客户端禁用了cookie或者不支持cookie,则会话跟踪会失效。
  假如客户端浏览器不支持cookie,则须要运用session及URL地址重写或者采用表单隐藏域。
  假如客户端支持cookie,则cookie能够设置为在本浏览器窗口以及子窗口内有效,也可以设为一切阅读器窗口内有效。可是session只能在本阅读器窗口及其子窗口内有效。假如两个浏览器窗口互不相干,它们将运用不一样的session。

  • 六、跨域支持上的不一样

  cookie支持跨域名访问。session不支持跨域名访问。仅在它所在的域名内有效。

  • 七、存储大小的不一样

  单个cookie保存的数据不能超过4k,session就没有这个限制。

相关文章
相关标签/搜索