<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        localstorage實現帶過期時間的緩存功能

        來源:懂視網 責編:小采 時間:2020-11-27 21:54:12
        文檔

        localstorage實現帶過期時間的緩存功能

        localstorage實現帶過期時間的緩存功能:前言 一般可以使用cookie,localstorage,sessionStorage來實現瀏覽器端的數據緩存,減少對服務器的請求。 1.cookie數據存放在本地硬盤中,只要在過期時間之前,都是有效的,即使重啟瀏覽器。但是會在每次HTTP請求中添加到請求頭中,如果數據過多,會造成性能問
        推薦度:
        導讀localstorage實現帶過期時間的緩存功能:前言 一般可以使用cookie,localstorage,sessionStorage來實現瀏覽器端的數據緩存,減少對服務器的請求。 1.cookie數據存放在本地硬盤中,只要在過期時間之前,都是有效的,即使重啟瀏覽器。但是會在每次HTTP請求中添加到請求頭中,如果數據過多,會造成性能問

        前言

        一般可以使用cookie,localstorage,sessionStorage來實現瀏覽器端的數據緩存,減少對服務器的請求。

        1.cookie數據存放在本地硬盤中,只要在過期時間之前,都是有效的,即使重啟瀏覽器。但是會在每次HTTP請求中添加到請求頭中,如果數據過多,會造成性能問題。

        2.sessionStorage保存在瀏覽器內存中,當關閉頁面或者瀏覽器之后,信息丟失。

        3.localstorage也是保存在本地硬盤中,除非主動清除,信息是不會消失的。但是實際使用時我們需要對緩存設置過期時間,本文便是講解如何為localstorage添加過期時間功能。

        這三者僅支持同源(host+port)的數據,不同源的數據不能互相訪問到。

        localstorage

        localstorage支持以下方法

      1. 保存數據:localStorage.setItem(key,value);
      2. 讀取數據:localStorage.getItem(key);
      3. 刪除單個數據:localStorage.removeItem(key);
      4. 刪除所有數據:localStorage.clear();
      5. 得到某個索引的key:localStorage.key(index);  
      6. 需要注意的是,僅支持String類型數據的讀取,如果存放的是數值類型,讀出來的是字符串類型的,對于存儲對象類型的,需要在保存之前JSON化為String類型。

        對于緩存,我們一般有以下方法

        set(key,value,expiredTime);
        get(key);
        remove(key);
        expired(key,expiredTime);
        clear(); 

        實現

        設置緩存

        對于過期時間的實現,除了用于存放原始值的緩存(key),這里添加了兩個緩存(key+EXPIRED:TIME)和(key+EXPIRED:START:TIME),一個用于存放過期時間,一個用于存放緩存設置時的時間。

        當讀取的時候比較 (過期時間+設置緩存的時間)和當前的時間做對比。如果(過期時間+設置緩存時的時間)大于當前的時間,則說明緩存沒過期。

        注意這里使用JSON.stringify對存入的對象JSON化。讀取的時候也要轉回原始對象。

        "key":{
         //輔助
         "expiredTime": "EXPIRED:TIME",
         "expiredStartTime": "EXPIRED:START:TIME",
         //全局使用
         //用戶信息
         "loginUserInfo": "USER:INFO",
         //搜索字段
         "searchString": "SEARCH:STRING",
         },
         /**
         * 設置緩存
         * @param key
         * @param value
         * @param expiredTimeMS 過期時間,單位ms
         */
         "set":function (key,value,expiredTimeMS) {
         if((expiredTimeMS == 0 ) || (expiredTimeMS == null)){
         localStorage.setItem(key,value);
         }
         else {
         localStorage.setItem(key,JSON.stringify(value));
         localStorage.setItem(key+cache.key.expiredTime,expiredTimeMS);
         localStorage.setItem(key+cache.key.expiredStartTime,new Date().getTime());
         }
         },

         讀取緩存

        由于讀取出來的是時間信息是字符串,需要將其轉化為數字再進行比較。

        /**
         * 獲取鍵
         * @param key
         * @returns {*} key存在,返回對象;不存在,返回null
         */
         "get":function (key) {
         var expiredTimeMS = localStorage.getItem(key+cache.key.expiredTime);
         var expiredStartTime = localStorage.getItem(key+cache.key.expiredStartTime);
         var curTime = new Date().getTime();
         var sum = Number(expiredStartTime) + Number(expiredTimeMS);
         if((sum) > curTime){
         console.log("cache-緩存["+key+"]存在!");
         return JSON.parse(localStorage.getItem(key));
         }
         else {
         console.log("cache-緩存["+key+"]不存在!");
         return null;
         }
         },

        移除緩存

        移除緩存時需要把三個鍵同時移除。

        /**
         * 移除鍵
         * @param key
         */
         "remove":function (key) {
         localStorage.removeItem(key);
         localStorage.removeItem(key+cache.key.expiredTime);
         localStorage.removeItem(key+cache.key.expiredStartTime);
         },

        其他代碼

        /**
         * 對鍵重新更新過期時間
         * @param key
         * @param expiredTimeMS 過期時間ms
         */
         "expired":function (key,expiredTimeMS) {
        
         if(cache.get(key)!=null){
         localStorage.setItem(key+cache.key.expiredTime,expiredTimeMS);
         }
        
         },
         /**
         * 清除所有緩存
         */
         "clear":function () {
         localStorage.clear();
         }

        總結

        以上所述是小編給大家介紹的localstorage實現帶過期時間的緩存功能,希望對大家有所幫助如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        localstorage實現帶過期時間的緩存功能

        localstorage實現帶過期時間的緩存功能:前言 一般可以使用cookie,localstorage,sessionStorage來實現瀏覽器端的數據緩存,減少對服務器的請求。 1.cookie數據存放在本地硬盤中,只要在過期時間之前,都是有效的,即使重啟瀏覽器。但是會在每次HTTP請求中添加到請求頭中,如果數據過多,會造成性能問
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 午夜在线a亚洲v天堂网2019| 亚洲精品自拍视频| 在线观看亚洲网站| 在线观看免费成人| 中国china体内裑精亚洲日本| 一二三四在线播放免费观看中文版视频 | 久久不见久久见免费视频7| 亚洲第一福利视频| 久久精品无码专区免费东京热| 久久精品国产亚洲av麻豆小说| 色欲A∨无码蜜臀AV免费播| 亚洲视频日韩视频| 无码日韩精品一区二区免费| 亚洲一区二区三区成人网站| 国产a不卡片精品免费观看 | 亚洲午夜成人精品无码色欲| 日韩电影免费在线观看视频| 有码人妻在线免费看片| 国产精品久久久亚洲| 2021在线观看视频精品免费| 亚洲一区二区三区国产精华液| 亚洲福利中文字幕在线网址| 免费无码又爽又刺激高潮软件| 久久精品国产亚洲77777| 最新中文字幕免费视频| ssswww日本免费网站片| 亚洲视频在线观看免费| 久久电影网午夜鲁丝片免费| 黄网站色视频免费观看45分钟 | 美女黄网站人色视频免费国产 | 四虎国产精品免费永久在线| 久久久久亚洲精品日久生情 | 精品久久久久亚洲| 亚洲精品自产拍在线观看| 无码乱肉视频免费大全合集| 色天使亚洲综合一区二区| 亚洲午夜国产精品无码| 国产啪精品视频网免费| 国产精品美女久久久免费| 亚洲人成毛片线播放| 美腿丝袜亚洲综合|