22/10/13 浏览器缓存

100 阅读2分钟

cookie

  • 介绍
    cookie 是当你浏览某个网站的时候,由 web 服务器存储在你的机器硬盘上的一个小的文本文件。
    它记录了你的用户名、密码、浏览的网页、停留的时间等信息。
    当你再次来到这个网站时,web 服务器会先看看有没有它上次留下来的 cookie。 如果有的话,会读取 cookie 中的内容,来判断使用者,并送出相应的网页内容,比如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录。
  • 用法
    document.cookie = "name=phoeny"
    并没有提供便捷的 get/set 用法,一般使用的时候会利用封装好的库,比如 vue-cookie
  • 大小
    4KB
  • 生命周期
    可设置失效时间,没有设置的话,默认为*浏览器会话期间*
  • 存储位置
    若不设置过期时间,则表示这个 cookie 的生命周期为浏览器会话期间,关闭浏览器, cookie 就消失,会话 cookie 一般不存储在硬盘上而是保存在内存里。
    有些浏览器提供了会话恢复功能,这种情况下即使关闭了浏览器,会话期 Cookie 也会被保留下来,就好像浏览器从来没有关闭一样,这会导致 Cookie 的生命周期无限期延长。 image.png 若设置了过期时间,浏览器就会把 cookie 保存到硬盘上 image.png
  • http请求
    当服务器收到 HTTP 请求时,服务器可以在响应头里面添加一个 Set-Cookie 选项。浏览器收到响应后通常会保存下 Cookie,之后对该服务器每一次请求中都通过 Cookie 请求头部将 Cookie 信息发送给服务器。
    每一次的 http 请求,如果有 cookie ,浏览器都会自动带上 cookie 发送给服务端。但是很多数据并不是每次请求都需要发给服务端,毕竟会增加网络开销,浪费带宽。

localStorage 和 sessionStorage 都是 html5 的新特性

localStorage

  • 用法
  1. 设置项:localStorage.setItem('myCat', 'Tom');
  2. 读取项:let cat = localStorage.getItem('myCat');
  3. 移除项:localStorage.removeItem('myCat');
  4. 移除所有项:localStorage.clear();
  • 大小
    5MB
  • 生命周期
    除非手动清除,否则将会永杰保存
  • 存储位置
    硬盘
  • http请求
    仅在浏览器中保存,不和服务器通信

sessionStorage

  • 用法
  1. 设置项:sessionStorage.setItem('myCat', 'Tom');
  2. 读取项:let cat = sessionStorage.getItem('myCat');
  3. 移除项:sessionStorage.removeItem('myCat');
  4. 移除所有项:sessionStorage.clear();
  • 大小
    5MB
  • 生命周期
    仅在当前**网页会话**下有效,关闭页面或浏览器后就会被清除
  • 存储位置
    内存
  • http请求
    仅在浏览器中保存,不和服务器通信

vuex

vuex用于组件之间的传值,刷新页面后vuex存储的值就会丢失。
vuex-persistedstate可以自动将vuex中的值同步到localStorage或sessionStorage中。