HTML5 Web存储

162 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

前几天面试遇到了一个题是问localStorage和sessionStorage的区别,当时的回答不是很全面,今天就针对这个问题做一下整理(概念,用法,区别)

HTML5 Web存储,一个比 cookie 更好的本地存储方式,什么是 HTML Web存储?

定义:使用HTML5 可以在本地存储用户的浏览数据。早些时候,本地存储使用的是 cookie,但是Web存储需要加载更加的安全与快速,这些数据不会被保存在服务器上,但是这些数据只用于用户请求网站,它也可以存储大量的数据,而不影响网站的性能, 包含 localStoragesessionStorage 。(数据以键/值对存在,web网页的数据只允许该网页访问使用)

localStorage(本地存储)

localStorage 对象存储的数据没在人为删除的情况下默认是长期存储的

常用API(localStorage相当于window下面的一个属性,故可以使用 . 方法和 [] 方法)

  • 存储数据

    localStorage.name = 'zhangsan'
    // 或者
    localStorage['name'] = 'zhangsan'
    // 或者
    localStorage.getIten('name','zhangsan')
    
  • 读取数据

     localStorage.getItem("name");
     // []方法
     localStorage["name"];
     // .方法
     localStorage.name;
    
  • 删除单个数据(使用delete关键字)

     localStorage.removeItem("name");
     // []方法
     delete localStorage["name"];
     // .方法
     delete localStorage.name
    
  • 删除所有数据

    localStorage.clear()
    
  • 得到某个索引的值

    // 通过自身的key
    for (var i=0;i<localStorage.length;i++) {
         console.log(localStorage.key(i));
     }
     
     // 通过for in 循环获取
     for(var key in localStorage){
         console.log(key);
    }
    
  • 获取所有值

    localStorage.valueOf();取出所有的值
    
  • 判断是否具有某个key

     // 如果存在的话返回true,不存在返回false
     localStorage.hasOwnProperty("name")
    

: 1.localStorage特定于页面的协议,不在同一域名下不能访问

  2.数据有大小限制,5M左右,不同浏览器大小会有不同

  3.生命周期是永久的,但是数据实际是存在浏览器的文件夹下的,卸载浏览器数据可能就会删除

  4.浏览器可以设置是否可以访问数据,如果设置不允许则会访问失败

  5.兼容IE8以上浏览器

  6.默认情况下是以字符串形式存储的,可以根据个人需要进行数据类型转换

sessionStorage(会话存储)

sessionStorage 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除

常用API(同上,和localStorage类似)

注意事项也和localStorage类似,唯一不同的就是数据存储周期不一样