本地存储

158 阅读1分钟

1、本地存储

  • sessionStorage

    • 用于本地存储一个会话中的数据,并且这些数据只有在当前会话页面中才能访问;
    • 会话结束,数据会被清除;
    • 不会自动把数据发给服务器,只会在本地存储;
    • 刷新页面的时候,数据不会被清除;
  • localStorage

    • 用于持久化的本地存储,除非用户手动删除,否则不会过期;
    • 可以跨页面访问;
    • 存储大小不超过5M;
    • 不会自动把数据发给服务器,只会在本地存储;
    • 在所有同源窗口中都是共享的;
    • 在浏览器的隐私模式下面是不可读取的;
    • 本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡;
    • 不能被爬虫抓取到;
  • cookie

    • 持久化本地存储,时间不过期,数据会一直保存在浏览器本地;
    • 大小限制4k,否则会被截掉;
    • 每次发送http请求时都会携带在http请求头中,可以在客户端和服务器之间来回携带,影响带宽;
    • 在所有同源窗口中都是共享的;
    • 会带来安全性问题:拿到cookie就可以取得所有session信息,无需解密,既可达到目的;
    • 通常由后端设置,由response流发送给客户端并且设置过期时间。前端也可以设置。
  • 设置localStorage(sessionStorage使用方法一样):

 - 写入字段:
     window.localStorage['a'] = 1
     window.localStorage.a = 1 
     window.localStorage.setItem('a',1)
- 读取字段
     window.localStorage.a
     window.localStorage['a']
     window.localStorage.getItem('a')
- 删除对应键值
     localStorage.removeItem('mydata')
- 删除所有数据
     localStorage.clear()
  • 设置cookie:
- 获取cookie
function getCookie(name){
   var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
   if(arr=document.cookie.match(reg)){
     return unescape(arr[2]);
   }else{
     return null;
   }
}