js的三种数据存储方式cookie,sessionStorage,localStorage。

1,932 阅读4分钟

简述储存?

缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。

js的三种数据存储方式

cookie,sessionStorage,localStorage区别

1.存储大小

cookie数据大小不能超过4k。 sessionStorage和localStorage存储大小的限制,比cookie大 ,可达到5M或更大。即弥补cookie的大小不足

2.有效时间
    //localStorage:    存储持久数据       浏览器窗口关闭后    数据不丢失     除非主动删除数据。
    //sessionStorage:  数据在当前         浏览器窗口关闭后    自动删除。
    //cookie:          设置cookie过期时间之前一直有效,即使窗口或浏览器关闭  默认情况下当浏览器         关闭后,cookie数据将被销毁
    
3.数据与服务器之间的交互方式

cookie的数据会自动的传递到服务器,服务器端也可以写cookie到客户端。
sessionStorage&localStorage不会自动把数据发给服务器,仅在本地保存。

浏览器缓存有那些? 通常缓存有哪几种?

cookie //1cookie的特点和作用?
1. 客户端(会话技术),将数据保存到客户端
2. cookie 存储数据在客户端浏览器
3. 浏览器对单个cookie的大小限制为(4kb)及对同一个域名下的总cookie数量限制为(20个)
4. cookie一般用于存出少量的不太敏感的数据
5. 在不登录的情况下,完成服务器对客户端的身份识别
Session 1session的特点
服务器端(会话技术)
在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中
session用于存储一次会话的多次请求的数据,存在服务器端
session可以存储任意类型,任意大小的数据
sessionStorage仅在当前会话下有效 关闭页面或浏览器后 就被清除

        setItem(key,value)  //设置数据 
        getItem(key)        //获取数据 
        removeItem(key)     //移除数据 
        clear()             //清除数据 
        window.sessionStorage.setItem("name","常东东");       //添加数据  
        window.sessionStorage.setItem("age","18");            
        console.log(window.sessionStorage.getItem("name"))    //获取数据    //常东东
        //window.sessionStorage.removeItem("gemder");         //清除某个数据 
        //window.sessionStorage.clear();                      //清除所有数据 

localStorage h5标准新添加的技术 用于长久保存整个网址的数据 保存的数据没有过期时间 知道手动删除 localStorage 和 sessionStorage最大一般为5mb 仅在客户端(即浏览器)中保存 不参与和服务器的通信

        localStorage(key,value)    //设置数据 
        getItem(key,value)         //获取数据  
        removeItem(key)            //移除数据 
        clear()                    //清除所有值
        //localStorage也可以手动设置生效时间 即(大概)思路 是存储的值加一个时间戳下次取值时 验证时间戳 
        //注意 localStorage只能存储字符 存入时将对象转为字符串JSON.stringify(setDate)读取时也要解析JSON.parse(getData)   
    var arr = [1,2,3,3,4,5,232,3,45,2]  
    window.localStorage.setItem("data",arr);              //添加数据                     
    window.localStorage.setItem("cm","180cm");            //
    console.log(window.localStorage.getItem("data"));     //获取数据  //1,2,3,3,4,5,232,3,45,2
                                                          //清除某个数据  
                                                          //清空所有数据 

Cookie

是一些数据 存储于你电脑上的文本文件中 用于存储web页面的用户信息
Cookie 数据是以键值对的形式存在的 每一个键值对都有过期时间
如果 不设置时间 浏览器关闭 cookie就会消失 当然优化也可以手动消除cookie
Cookie每次都会携带在http请求头中 如果使用cookie保存过多数据会带来性能问题
Cookie 内存受限 每个域名下是4k~ 每个域名大概能存储50哥键值对

基本操作
通过访问document.cookie可以对cookie进行创建 修改获取 默认情况下 cookie在浏览器关闭时删除 你还可以为cookie某个键值 添加一个过期时间 如果设置新的cookie时 某个key已经存在了 则会更新这个key对应的值 否则他们hi同时存在cookie中

   document.cookie = "username = eddieChang";          //设置cookie  
    document.cookie = "age = 20"    
    var msg = document.cookie;                          //读取cookie 
    console.log(msg)
    
    var d = new Date();                                 //添加过期时间 单位天  
    var days = 3;                                       //3天  
    d.setDate(d.getDate()+days);     
    // console.log('tag', d)   时间戳  
    document.cookie = "username = eddieChang" + "expires="+d;
    //删除cookie 给某个键值对 设置过期时间  
    d.setDate(d.getDate() - 1);
    console.log(document.cookie)

//3个存储的共同点 d都保存在浏览器端 可以指aplition 中查看
// 不同点

  • 传递方式不同
    cookie数据始终在同源 的http请求中携带(即使不需要) 即cookie在浏览器 和服务器 来回传递
  • 数据大小不同
    cookie受限 ..... sessionStorage 和 localStoreage 虽然 也有存储大小的限制 但比cookie大的多 5m+~
  • 数据有效期不同
    sessionStorage 仅在当前浏览器窗口关闭前有效 不可能持久保持
    localStore 始值有效 窗口或浏览器关闭也一直在 因此作用持久数据
    cookie 只在设置cookie过期的时间之前一直有效 即使窗口或浏览器关闭
  • 作用域不同
    sessionStorage 不在不同的浏览器窗口中共享 即使同一个页面
    loca.... && cookie 在同源窗口中 都是共享的
    如果有错误或者不严谨的地方,请留言备注,十分感谢,对作者也是一种鼓励。