• 前端 本地缓存图片


    localStorage和sessionStorage

    localStorage:永久存储,只要不清除缓存,会一直存在

    sessionStorage:临时存储,只在当前窗口有效,关闭当前窗口或新打开窗口无效

    cookie:可以设置缓存时间

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <img id="aa"  alt="A close up of an elephant" src="../image/01.png">
    <img id="bb"  alt="A close up of an elephant" src="../image/02.png">
    </body>
    <script>
        var gsFiles = JSON.parse(sessionStorage.getItem("gsFiles")) || {};
        var a = document.getElementById("aa");
        var b = document.getElementById("bb");
        gsFilesDate = gsFiles.date;
        date = new Date();
        todaysDate = (date.getMonth() + 1).toString() + date.getDate().toString();
         function imgLoad(el){
             var imgCanvas = document.createElement("canvas");
             imgContext = imgCanvas.getContext("2d");
    // 确保canvas尺寸和图片一致
             imgCanvas.width = el.width;
             imgCanvas.height = el.height;
    // 在canvas中绘制图片
             imgContext.drawImage(el, 0, 0, el.width, el.height);
    // 将图片保存为Data URI
             if(el == a){
                 gsFiles.a = imgCanvas.toDataURL("bj.png");
             }else{
                 gsFiles.b = imgCanvas.toDataURL("bj.png");
             }
             //gsFiles.el = imgCanvas.toDataURL("bj.png");
             gsFiles.date = todaysDate;
    // 将JSON保存到本地存储中
             try {
                 sessionStorage.setItem("gsFiles", JSON.stringify(gsFiles));
             }
             catch (e) {
                 console.log("Storage failed: " + e);
             }
         }
        // 检查数据,如果不存在或者数据过期,则创建一个本地存储
        if (typeof gsFilesDate === "undefined" || gsFilesDate < todaysDate) {
            // 图片加载完成后执行
            <!--image1-->
            a.addEventListener("load", function () {
                imgLoad(a)
            }, false);
            b.addEventListener("load", function () {
                imgLoad(b)
            }, false);
    // 设置图片
            a.setAttribute("src", "../image/01.png");
            b.setAttribute("src", "../image/02.png");
        }
        else {
    // Use image from sessionStorage
            a.setAttribute("src", gsFiles.a);
            b.setAttribute("src", gsFiles.b);
        }
        console.log(document.cookie)
    </script>
    </html>
    sessionStorage

    sessionStorage和localStorage用法相同

    function setCookie(cname,cvalue,exdays){
        var d = new Date();
        d.setTime(d.getTime()+(exdays*24*60*60*1000));
        var expires = "expires="+d.toGMTString();
        document.cookie = cname+"="+cvalue+"; "+expires;
    }
    function getCookie(c_name){
        if (document.cookie.length>0)
        {
            c_start=document.cookie.indexOf(c_name + "=");
            if (c_start!=-1)
            {
                c_start=c_start + c_name.length+1;
                c_end=document.cookie.indexOf(";",c_start);
                if (c_end==-1) c_end=document.cookie.length;
                return unescape(document.cookie.substring(c_start,c_end))
            }
        }
        return ""
    }
    function checkCookie(){
        var src=getCookie("src"),
            src1=getCookie("src1");
        if (src==""){
            setCookie("src","../image/02.png",30);
            setCookie("src1","../image/01.png",30);
           // alert(1)
        }else{
            //setCookie("src",getCookie("username"),30);
            //alert(2)
        }
        document.getElementById("aa").src=getCookie("src");
        document.getElementById("bb").src=getCookie("src1");
    }
    cookie
  • 相关阅读:
    PAT乙级1014.福尔摩斯的约会 (20)(20 分)
    PAT乙级1013.数素数
    PAT乙级1012.数字分类 (20)(20 分)
    PAT乙级1011.A+B和C (15)(15 分)
    PAT乙级1025.反转链表 (25)
    PAT乙级1020.月饼(20)
    PAT乙级1015.德才论(25)
    PAT乙级1010.一元多项式求导(25)
    PAT乙级1009.说反话(20)
    PAT乙级1008.数组元素循环右移问题(20)
  • 原文地址:https://www.cnblogs.com/dongxiaolei/p/8663985.html
Copyright © 2020-2023  润新知