摘要:是后臺(tái)在瀏覽器注入一個(gè)設(shè)置了的不可讀取的,由后臺(tái)保存在數(shù)據(jù)庫或者內(nèi)存中,在中,是靠作為唯一標(biāo)示來實(shí)現(xiàn)的,也可以設(shè)置過期時(shí)間。是的數(shù)據(jù)存儲(chǔ)辦法,也是有大小限制的,但是不可以設(shè)置過期時(shí)間。本文主要說的是如何自定義辦法讓實(shí)現(xiàn)過期時(shí)間。
introduction
在 web 開發(fā)中,我們知道 cookie、session、localStorage 都可以保存用戶的數(shù)據(jù),cookie的 domain、path 限制了 cookie 的跨域, 有數(shù)量和大小的限制,可以設(shè)置有效時(shí)間。 session是后臺(tái)在瀏覽器注入一個(gè)設(shè)置了 httponly 的不可讀取的 cookie , session data由后臺(tái)保存在數(shù)據(jù)庫或者內(nèi)存中,在web中,session 是靠 cookie 作為唯一標(biāo)示來實(shí)現(xiàn)的,也可以設(shè)置過期時(shí)間。 localStorage 是 H5 的數(shù)據(jù)存儲(chǔ)辦法, 也是有大小限制的,但是不可以設(shè)置過期時(shí)間。 本文主要說的是如何自定義辦法讓 localStorage 實(shí)現(xiàn)過期時(shí)間。
module.exports = { // 過期時(shí)間,默認(rèn)30天 age: 30 * 24 * 60 * 60 * 1000, /** * 設(shè)置過期時(shí)間 * @param age * @returns {exports} */ setAge: function (age) { this.age = age; return this; }, /** * 設(shè)置 localStorage * @param key * @param value */ set: function (key, content) { localStorage.removeItem(key); let _time = new Date().getTime(); let _age = this.age; let value = {}; value._value = content; // 加入時(shí)間 value._time = _time; // 過期時(shí)間 value._age = _time + _age; localStorage.setItem(key, JSON.stringify(value)); return this; }, /** * 判斷一個(gè) localStorage 是否過期 * @param key * @returns {boolean} */ isExpire: function (key) { var isExpire = true, value = localStorage.getItem(key), now = new Date().getTime(); if (value) { value = JSON.parse(value); // 當(dāng)前時(shí)間是否大于過期時(shí)間 isExpire = now > value._age; } else { // 沒有值也是過期 } return isExpire; }, /** * 獲取某個(gè) localStorage 值 * @param key * @returns {*} */ get: function (key) { let isExpire = this.isExpire(key); let value = null; if (isExpire) return value; value = localStorage.getItem(key); value = JSON.parse(value); return value._value; } };usage
var localstorage = require("./localstorage.js"); localstorage.setAge(24*60*60*1000).set("a": "abc").set("b",{a:1,b:2})在ios設(shè)備上無法重復(fù)setItem()
另外,在iPhone/iPad上有時(shí)設(shè)置setItem()時(shí)會(huì)出現(xiàn)詭異的QUOTA_EXCEEDED_ERR錯(cuò)誤,這時(shí)一般在setItem之前,先removeItem()就ok了。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/87844.html
摘要:于是一個(gè)擁有版本控制和過期控制的本地內(nèi)容存儲(chǔ)功能模塊就算初步完成了。最后基于這個(gè)事情的考慮,于是順便寫了個(gè)本地存儲(chǔ)控制的庫,基本都在上面了 前言 關(guān)于localStorage sessionStorage之類的api怎么用已經(jīng)無需我再贅述了,但是具體怎么落實(shí)到一個(gè)稍微復(fù)雜一些的業(yè)務(wù)中還是需要做一些前期的準(zhǔn)備 遇見的一些問題 1.localStorage 與 sessionStorage...
摘要:于是一個(gè)擁有版本控制和過期控制的本地內(nèi)容存儲(chǔ)功能模塊就算初步完成了。最后基于這個(gè)事情的考慮,于是順便寫了個(gè)本地存儲(chǔ)控制的庫,基本都在上面了 前言 關(guān)于localStorage sessionStorage之類的api怎么用已經(jīng)無需我再贅述了,但是具體怎么落實(shí)到一個(gè)稍微復(fù)雜一些的業(yè)務(wù)中還是需要做一些前期的準(zhǔn)備 遇見的一些問題 1.localStorage 與 sessionStorage...
閱讀 3310·2021-11-11 11:00
閱讀 2633·2019-08-29 11:23
閱讀 1512·2019-08-29 10:58
閱讀 2406·2019-08-29 10:58
閱讀 3014·2019-08-23 18:26
閱讀 2569·2019-08-23 18:18
閱讀 2089·2019-08-23 16:53
閱讀 3470·2019-08-23 13:13