中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么實現localStorage的過期機制

發布時間:2022-03-01 09:23:23 來源:億速云 閱讀:249 作者:iii 欄目:開發技術

今天小編給大家分享一下怎么實現localStorage的過期機制的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    cookie過期機制

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

    expires和max-age的區別

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

    怎么實現localStorage的過期機制

    • Expires在HTTP/1.0中已經定義

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

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

    • 客戶端和服務端時間不同步的問題。往往表現為時區不同、客戶端時間可被用戶自由修改。

    • 很容易在配置后忘記具體的過期時間,導致過期來臨出現浪涌現象(我的理解應該是同時大批量更新的問題)。

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

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

    怎么實現localStorage的過期機制

    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');

    怎么實現localStorage的過期機制

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

    以上就是“怎么實現localStorage的過期機制”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    灵丘县| 恩施市| 礼泉县| 永顺县| 延津县| 汾西县| 来凤县| 南宁市| 安庆市| 托克逊县| 天峻县| 临武县| 马鞍山市| 娄烦县| 章丘市| 新巴尔虎左旗| 集安市| 中宁县| 凉城县| 太康县| 清远市| 炉霍县| 麻江县| 遂宁市| 镇雄县| 稻城县| 珠海市| 醴陵市| 桐柏县| 盘山县| 阿拉善左旗| 安平县| 内丘县| 宁明县| 东阿县| 三河市| 丰都县| 林甸县| 钟山县| 金湖县| 来凤县|