<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們都知道cookie儲存的資料是可以新增過期時間屬性(Expires/Max-Age),實現過期的。 那麼,LocalStrorage、sessionStrorage可以設定過期嗎??
帶著這樣的疑問,我們一層層剝開其神祕的面紗。
我們知道Expires和Max-age都可以設定cookie的過期時間,那麼兩者存在什麼樣的異同點呢?
Expires 設定的是絕對值,即直接設定當前cookie在什麼時候過期。 就像下面圖中的這樣, GMT格式。
- Expires在HTTP/1.0中已經定義
- max-age在HTTP/1.1中才有定義,為了向下相容,僅使用max-age不夠;
Expires 設定一個絕對值,至少會帶來兩個方面的問題:
Max-Age代表存活時間,記錄的是一個相對時間(例如 6000s),起始時間點是伺服器記錄的requet-time。
我們看到除了上面提到的兩個值,還有 session, 這個值代表的意思就是在當前連線下,關閉瀏覽器視窗、斷開與服務連線,該資料即失效。
localstorage本身是沒有過期機制的,不過我們可以通過其他手段來擴充套件,使其能夠滿足我們的資料過期的需求。
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的過期機制內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45