浏览器的存储

浏览器的存储

  • http response header中的set-cookie
  • js中可以通过document.cookie可以读写cookie
  • 用于浏览器端与服务器端的交互(主要用于辨别用户)
  • 客户端自身数据的存储(逐渐用localStorage代替)
  • cookie是创建于服务器端
  • cookie保存在浏览器端
  • cookie的生命周期可以通过cookie.setMaxAge(2000);来设置,如果没有设置setMaxAge,则cookie的生命周期当浏览器关闭的时候,就消亡了
  • cookie可以被多个同类型的浏览器共享 可以把cookie想象成一张表
  • cookie中在相关域名下面 —— cdn的流量损耗 建议cnd的域名与主站的域名要分开

session

失效的方法

  • 关闭tomcat
  • reload web应用
  • session时间到
  • invalidate session

cookie与session比较

  • 存在的位置

    • cookie:存在于客户端,临时文件夹中
    • session:存在于服务器的内存中,一个session域对象为一个用户浏览器服务
  • 安全性

    • cookie是以明文的方式存放在客户端的,安全性低,可以通过一个加密算法进行加密后存放
    • session存放于服务器的内存中,所以安全性好
  • 网络传输量

    • cookie会传递消息给服务器
    • session本身存放于服务器,不会有传送流量
  • 生命周期(以20分钟为例)

    • cookie的生命周期是累计的,从创建时,就开始计时,20分钟后,cookie生命周期结束,
    • session的生命周期是间隔的,从创建时,开始计时如在20分钟,没有访问session,那么session生命周期被销毁但是,如果在20分钟内(如在第19分钟时)访问过session,那么,将重新计算session的生命周期
    • 关机会造成session生命周期的结束,但是对cookie没有影响
  • 访问范围

    • session为一个用户浏览器独享
    • cookie为多个用户浏览器共享

localStorage

  生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信。

sessionStorage

  当前会话下有效,关闭页面或浏览器后被清除。存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信。源生接口可以接受,亦可再次封装来对Object和Array有更好的支持。

公用方法(本地缓存)

  • setItem(key,value); // 设置某条
  • getItem(key);// 获取某条
  • removeItem(key); // 移除单个信息
  • clear() // 清空所有的信息

不同(本地缓存)

  • 不同浏览器无法共享localStorage或sessionStorage中的信息。
  • 相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口)
  • 但是不同页面或标签页间无法共享sessionStorage的信息。这里需要注意的是,页面及标 签页仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是可以共享sessionStorage的

 上一篇
重绘与回流 重绘与回流
重绘与回流重绘(redraw) 元素外观的改变所触发的浏览器行为,例如改变visibility、outline、背景色等属性。 浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。 重绘不会带来重新布局,并不一定伴随重排。 减少重绘
2018-05-13
下一篇 
请求缓存 请求缓存
浏览器与服务器之间的缓存策略http-header可以设置缓存信息 Cache-control取值 max-age   从请求资源到这段时间之内这个是有效的,再次发送请求的时候可以直接从缓存里面读取,(高于expires) s-maxa
2018-05-12
  目录