zoukankan      html  css  js  c++  java
  • 本地存储localStorage和sessionStorage

    cookie劣势:

    存储大小限制,4kb

    单域名下有数量限制,50个左右

    污染请求头,浪费流量

    本地存储web storage

    包括localStorage和sessionStorage

    localStorage 本身是一个对象,可以打印查看

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>localStorage</title>
    </head>
    <body>
        <script>
            console.log(localStorage);
        </script>
    </body>
    </html>
    复制代码

     setItem() 设置存储内容

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>localStorage</title>
    </head>
    <body>
        <script>
            localStorage.setItem("cyy",25);
            console.log(localStorage);
        </script>
    </body>
    </html>
    复制代码

    将赋值语句注释,关闭网页后再次打开,存储的数据依旧存在

    getItem() 获取存储内容

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>localStorage</title>
    </head>
    <body>
        <script>
            //localStorage.setItem("cyy",25);
            console.log(localStorage.getItem("cyy"));
        </script>
    </body>
    </html>
    复制代码

    使用对象方式存储

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>localStorage</title>
    </head>
    <body>
        <script>
            //使用对象方式存储
            localStorage.cyy2=26;
            console.log(localStorage);
        </script>
    </body>
    </html>
    复制代码

    获取方式同理

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>localStorage</title>
    </head>
    <body>
        <script>
            //使用对象方式存储
            localStorage["cyy3"]=24;
            console.log(localStorage.cyy3);
            console.log(localStorage["cyy3"]);
        </script>
    </body>
    </html>
    复制代码

    使用 removeItem() 删除存储的值

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>localStorage</title>
    </head>
    <body>
        <script>
            // localStorage.cyy="cyy";
            // localStorage.cyy2="cyy2";
            localStorage.removeItem("cyy2");
            console.log(localStorage.cyy);
            console.log(localStorage.cyy2);
        </script>
    </body>
    </html>
    复制代码

    使用 clear 清除存储内容

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>localStorage</title>
    </head>
    <body>
        <script>
            localStorage.cyy="cyy";
            localStorage.cyy2="cyy2";
            localStorage.cyy3="cyy3";
            localStorage.cyy4="cyy4";
            console.log(localStorage);
        </script>
    </body>
    </html>
    复制代码

     localStorage.clear() 清除所有存储

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>localStorage</title>
    </head>
    <body>
        <script>
            // localStorage.cyy="cyy";
            // localStorage.cyy2="cyy2";
            // localStorage.cyy3="cyy3";
            // localStorage.cyy4="cyy4";
            
            localStorage.clear();
            console.log(localStorage);
        </script>
    </body>
    </html>
    复制代码

    使用 length 属性获取存储的个数

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>localStorage</title>
    </head>
    <body>
        <script>
            localStorage.cyy="cyy";
            localStorage.cyy2="cyy2";
            localStorage.cyy3="cyy3";
            localStorage.cyy4="cyy4";
    
            console.log(localStorage.length);
        </script>
    </body>
    </html>
    复制代码

    不同的存储时效

    localStorage 存储会持久化(一般来说没有时效,不像cookie)

    sessionStorage 会在网页关闭时失效(刷新不会失效)

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>localStorage</title>
    </head>
    <body>
        <script>
            sessionStorage.cyy="cyy";
    
            console.log(sessionStorage);
        </script>
    </body>
    </html>
    复制代码

    不同的存储容量

    localStorage 一般是2-5M

    sessionStorage 存储容量不一,部分浏览器没有限制

    使用storage时的注意点:

    1、存储容量超出限制(会抛出QuotaExceededError异常,应该使用try catch)

    2、存储类型限制(只能存储字符串)

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>localStorage</title>
    </head>
    <body>
        <script>
            localStorage.a=[1,2,3];
    
            console.log(localStorage);
        </script>
    </body>
    </html>
    复制代码

     3、sessionStorage失效机制(刷新不会失效,关闭页面会失效)

    实现一个带有过期机制的localStorage

    复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>localStorage</title>
    </head>
    <body>
        储存数据:<input type="text" id="data"><br>
        储存时间(分钟):<input type="text" id="time"><br>
        数据展示:<span id="show">暂无数据</span><br>
        <button id="btn">保存</button>
    
        <script>
            var now=new Date().getMinutes();
            if(now>=localStorage.time){
                localStorage.clear();
            }else{
                if(localStorage.data){
                    show.innerHTML=localStorage.data;
                }
            }
    
            btn.onclick=function(){
                localStorage.setItem("data",data.value);
                show.innerHTML=localStorage.data;
    
                localStorage.setItem("time",new Date().getMinutes()+Number(time.value));
            }
    
            console.log(localStorage);
        </script>
    </body>
    </html>
    复制代码

    web storage的优化

    性能与存储容量大小无关,与读取次数有关

    建议:

    减少读取次数

    一个item中尽量多储存数据

    转发 https://www.cnblogs.com/chenyingying0/p/12438795.html

  • 相关阅读:
    Property总结
    静态类和 关于什么时候使用“静态方法”
    最简单的MVVM结构(学习)
    依赖属性和附加属性1(转载)
    Nested & Access modifiers
    Template methord
    WPF 绑定及惯用法(一) 转载自loveis715
    关于Property赋值
    Different Binding RelativeSource Mode
    依赖属性和附加属性2(转载)
  • 原文地址:https://www.cnblogs.com/qianduanlaoniao/p/12439457.html
Copyright © 2011-2022 走看看