FE

网站存储技术

cookie localStorage sessionStorage IndexDB

Posted by nolan on December 1, 2019
  • 读取
document.cookie
  • 写入
document.cookie = newCookie
// newCookie 就是一个键值对形式的字符串

ps.用这个方法一次只能对一个 cookie 的值进行设置或更新;

  • cookie 的属性
    • ;path=path 默认为当前文档位置的路径
    • ;domain=domain 例如 exam.com 或 1.exam.com,若无定义,默认为当前文档的域名部分;
    • ;max-age=timeValue 单位为秒,多长时间后 cookie 失效
    • ;expires=timeValue 某时间点后失效
    • ;secure cookie 只能通过 http 传输

localStorage

  • 用法
localStorage.setItem('myCat', 'Tom');

var cat = localStorage.getItem('myCat');

localStorage.removeItem('myCat');

// Clear all items
localStorage.clear();

sessionStorage

  • 和 localStorage 的区别
    • localStorage 不会过期,sessionStorage 会在网页 session 结束(关闭网页)的时候清除
  • api

    // Save data to sessionStorage
    sessionStorage.setItem('key', 'value');
    
    // Get saved data from sessionStorage
    let data = sessionStorage.getItem('key');
    
    // Remove saved data from sessionStorage
    sessionStorage.removeItem('key');
    
    // Remove all saved data from sessionStorage
    sessionStorage.clear();
    

IndexDB

IndexedDB 是一个基于 JavaScript 的面向对象的数据库

  • 应用
    • 结合 service worker 制作离线 PWA
  • 特性
    • 同源策略:当你在某个域名下操作储存数据的时候,你不能操作其他域名下的数据;
    • 异步:使用 IndexedDB 执行的操作是异步执行的,以免阻塞应用程序;