欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文教你如何實現localStorage的過期機制

 更新時間:2022年02月28日 16:45:37   作者:前端superman  
要知道localStorage本身并沒有提供過期機制,既然如此那就只能我們自己來實現了,這篇文章主要給大家介紹了關于如何實現localStorage過期機制的相關資料,需要的朋友可以參考下

前言

我們都知道cookie存儲的數據是可以添加過期時間屬性(Expires/Max-Age),實現過期的。 那么,LocalStrorage、sessionStrorage可以設置過期嗎??

帶著這樣的疑問,我們一層層剝開其神秘的面紗。

cookie過期機制

我們知道Expires和Max-age都可以設置cookie的過期時間,那么兩者存在什么樣的異同點呢?

expires和max-age的區(qū)別

Expires 設置的是絕對值,即直接設置當前cookie在什么時候過期。 就像下面圖中的這樣, GMT格式。

  • Expires在HTTP/1.0中已經定義
  • max-age在HTTP/1.1中才有定義,為了向下兼容,僅使用max-age不夠;

Expires 設置一個絕對值,至少會帶來兩個方面的問題:

  • 客戶端和服務端時間不同步的問題。往往表現為時區(qū)不同、客戶端時間可被用戶自由修改。
  • 很容易在配置后忘記具體的過期時間,導致過期來臨出現浪涌現象(我的理解應該是同時大批量更新的問題)。

Max-Age代表存活時間,記錄的是一個相對時間(例如 6000s),起始時間點是服務器記錄的requet-time。

我們看到除了上面提到的兩個值,還有 session, 這個值代表的意思就是在當前連接下,關閉瀏覽器窗口、斷開與服務連接,該數據即失效。

localStorage 數據過期

localstorage本身是沒有過期機制的,不過我們可以通過其他手段來擴展,使其能夠滿足我們的數據過期的需求。

需求分析:

  • 存入數據時,順帶傳入過去時間;
  • 獲取數據時,判斷當前是否過期,過期返回 undefined; 否則正常返回數據。

動手實踐

localStorage 和 sessionStorage 都繼承自 Storage 對象, 所以我們可以擴展Storage原型方法。

setStorageWithAge(key, value, age) 方法, 接收三個參數,第三個參數代表最大過期時間,我們這里參考 cookie的 Max-Age 的實現,用相對時間來做。

getStorageWithAge(key),內部直接判斷時間是否過期來返回對應的值。

代碼實現:

Storage.prototype.setStorageWithAge = (key, value, age) => {
    if (isNaN(age) || age < 1) throw new Error("age must be a number");
    const obj = {
        data: value, //存儲值
        time: Date.now(), //存值時間戳
        maxAge: age, //過期時間
    };
    localStorage.setItem(key, JSON.stringify(obj));
};

Storage.prototype.getStorageWithAge = key => {
    const { data, time, maxAge } = JSON.parse(localStorage.getItem(key));
    if (time + maxAge < Date.now()) {
        localStorage.removeItem(key);
        return undefined;
    }
    return data;
};

嘗試調用:

localStorage.setStorageWithAge('amingxiansen', '測試過期時間', 30000);
localStorage.getStorageWithAge('amingxiansen');

設定30s的過期時間,過期之前和過期之后獲取到的結果。

參考文章

總結

Storage只是瀏覽器的一種存儲方案,除此之外還有IndexDB、WebSQL等。

這種實現數據過期機制的思路比較通用,可以擴展到其他需要設置數據過期的場景下。

到此這篇關于如何實現localStorage過期機制的文章就介紹到這了,更多相關localStorage的過期機制內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • js獲取元素的外鏈樣式的簡單實現方法

    js獲取元素的外鏈樣式的簡單實現方法

    下面小編就為大家?guī)硪黄猨s獲取元素的外鏈樣式的簡單實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • javascript 冒泡排序 正序和倒序實現代碼

    javascript 冒泡排序 正序和倒序實現代碼

    javascript 冒泡排序 正序和倒序實現代碼,需要的朋友可以參考下。
    2010-12-12
  • js+HTML5實現canvas多種顏色漸變效果的方法

    js+HTML5實現canvas多種顏色漸變效果的方法

    這篇文章主要介紹了js+HTML5實現canvas多種顏色漸變效果的方法,涉及html5屬性的相關技巧,需要的朋友可以參考下
    2015-06-06
  • JavaScript 如何刪除小數點后的數字

    JavaScript 如何刪除小數點后的數字

    這篇文章主要介紹了JavaScript 刪除小數點后的數字實例代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • url中的特殊符號有什么含義(推薦)

    url中的特殊符號有什么含義(推薦)

    這篇文章主要介紹了url中的特殊符號有什么含義(推薦)的相關資料,需要的朋友可以參考下
    2016-06-06
  • JavaScript實現秒殺時鐘倒計時

    JavaScript實現秒殺時鐘倒計時

    這篇文章主要為大家詳細介紹了JavaScript實現秒殺時鐘倒計時,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Bootstrap柵格系統(tǒng)學習筆記

    Bootstrap柵格系統(tǒng)學習筆記

    這篇文章主要為大家詳細介紹了Bootstrap柵格系統(tǒng)學習筆記,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • JS圖片懶加載的優(yōu)點及實現原理

    JS圖片懶加載的優(yōu)點及實現原理

    這篇文章主要介紹了JS圖片懶加載的優(yōu)點及實現原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • JS常用正則表達式總結

    JS常用正則表達式總結

    JS常用正則表達式總結。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • 利用d3.js實現蜂巢圖表帶動畫效果

    利用d3.js實現蜂巢圖表帶動畫效果

    這篇文章主要給大家介紹了關于如何利用d3.js實現蜂巢圖表帶動畫效果的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用d3.js具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09

最新評論