精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊前端存儲庫Localforage和存儲配額

開發 前端
目前使用率最高的當之無愧為??Web Storage API??,也就是??localStorage??和??sessionStorage??,API簡單,讀取效率高。然后是??indexedDB??,但大部分時間是存在于八股文和面試題中。

前言

瀏覽器本地存儲,是每一個前端小伙伴都相當熟悉的知識點。

目前使用率最高的當之無愧為Web Storage API?,也就是localStorage和sessionStorage?,API簡單,讀取效率高。然后是indexedDB?,但大部分時間是存在于八股文和面試題中。indexedDB?的優勢為存儲空間大,且支持各種數據結構,性能也沒有問題。之所以不為重用,是因為indexedDB?的API多、長且紛雜。另外,前端使用數據庫還需要了解一些表、游標、事務等一些概念,對于不了解后端的同學來說上手成本也就高出localStorage?太多。所以,在5M內的存儲領域,indexedDB?并非首選。另外WebSQL?已被H5標準放棄,而元老級的Cookie也不再適合現代的客戶端存儲任務。

那么有沒有一個既保留indexedDB?優點,上手又簡單的方法呢,答案就是封裝js庫,localforage就是一個比較成熟的方案。

localforage

簡介

localforage是一個 JavaScript 庫,通過簡單類似 localStorage API 的異步存儲來改進你的 Web 應用程序的離線體驗。它能存儲多種類型的數據,而不僅僅是字符串。

localforage?采用優雅降級策略,若瀏覽器不支持indexedDB? 或 WebSQL?,則使用 localStorage?。所以,在優先選用indexedDB存儲的前提下,兼容性也得以保證,在所有主流瀏覽器中都可使用:Chrome,Firefox,IE 和 Safari(包括 Safari Mobile)。

localforage在github上擁有21.5k個star,npm下載量每周200w左右,正常使用也不會出現問題。

用法

詳細的使用方法不做過多贅述,只講一下存取示例。

  • setItem

// 通過 localForage 完成存儲
localforage.setItem('key', 'value').then(doSomethingElse);

// localForage 同樣支持回調函數
localforage.setItem('key', 'value', doSomethingElse);

  • getItem

localforage.getItem('somekey').then(function(value) { 
// 當離線倉庫中的值被載入時,此處代碼運行
console.log(value);
}).catch(function(err) {
// 當出錯時,此處代碼運行
console.log(err);
});
// 回調版本:
localforage.getItem('somekey', function(err, value) {
// 當離線倉庫中的值被載入時,此處代碼運行
console.log(value);
});

實踐

在一次的業務需求中,基于以下兩點,果斷選擇了localforage。

  1. 后期會有大量數據需要本地存儲。
  2. 轉轉內部有基于localforage.js二次封裝的庫,且包含設置過期時間的方法,適用于此次需求。

上線后的一段時間,該功能平穩運行。直到sentry(錯誤日志監控系統)出現了大量關于內存溢出的報錯......

問題處理

艱難復現

起初懷疑是localforage?有兼容性問題,但是localforage?有優雅降級機制。再加上報錯內容為QuotaExceededError?,所以在閱讀大量資料后基本鎖定為在indexedDB的使用上出現了問題。另外,報錯用戶數量為個位數,說明了是用戶操作或手機存在異常導致的問題。

在確定了問題的大體方向,排查代碼沒有思路的前提下,眼前能做的就是復現這個問題。

剛才提到,QuotaExceededError為內存溢出類型報錯,直覺告訴我,需要找一個內存空間剩余最少的測試機,但當時最少的也剩余20GB,于是下載了一天大型軟件后,終于在內存剩余100MB左右時成功復現。

問題原因

不同于瀏覽器會為localStorage?預留5MB左右的儲存空間,indexedDB的配額是動態計算的,準確的說是瀏覽器的儲存配額是動態計算的,雖然瀏覽器實現各不相同,但可用存儲量通常取決于設備上可用的存儲量。

這個可用的存儲量稱為全局限制,Firefox大約為可用磁盤空間的50%,Chrome的這一數據能達到80%。如果超過此范圍,則會發起稱為源回收的過程,刪除整個源的數據,直到存儲量再次低于限制。刪除源數據沒有只刪一部分的說法——因為這樣可能會導致不一致的問題。

除全局限制外,還有另一個限制稱為組限制——為全局限制的20%。這里可以把每個二級域名看作一組,每組可以聚合使用最多20%的全局限制。

如果超出組限制,或者源回收過程無法釋放足夠空間,indexedDB? 或緩存 API就會拋出名為 QuotaExceededError? 的 DOMError。

如何查看有多少可用存儲空間?

if (navigator.storage && navigator.storage.estimate) { 
const quota = await navigator.storage.estimate();
// quota.usage -> 已使用的字節數。
// quota.quota -> 可用最大字節數。
const percentageUsed = (quota.usage / quota.quota) * 100;
console.log(`已使用${percentageUsed}%可用儲存。`);
const remaining = quota.quota - quota.usage;
console.log(`最多可再寫入${remaining}字節。`);
}

Ps.這個方法使用了StorageManager API,使用前要先對其進行功能檢測。實測過程中,Android的webview支持此方法,ios卻不支持。

如何解決

優雅降級只是去判斷了瀏覽器是否支持某種本地存儲的方法,但無法處理硬盤不足的問題,所以如果想去避免這個問題,可以在業務代碼中使用try...catch進行異常捕獲,手動進行異常處理。

業務中常用的解決辦法是彈窗提示用戶去清理手機硬盤。實測中,華為手機硬盤小于100MB時,系統層也會彈出清理手機的彈窗提示。

try {
localforage.setItem('key', 'value', doSomethingElse);
} catch(err) {
if (err.name === 'QuotaExceededError') {
//異常處理
}
}

總結&思考

  • localforage?是個優秀的前端存儲js庫,某種角度來講,indexedDB?的發展要感謝localforage。
  • 不論localStorage?還是indexedDB?,存儲空間都受瀏覽器存儲配額的影響,而瀏覽器的存儲配額取決于本地磁盤剩余空間的大小。配額不足就會導致瀏覽器報QuotaExceededError。
  • 開源輪子查問題沒思路時,在代碼倉庫issue中查找會是一個捷徑,作者就忽略了這點繞了彎路。

參考資料

1.https://web.dev/storage-for-the-web/

2.https://developer.mozilla.org/zh-CN/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria

3.https://www.zhangxinxu.com/wordpress/2018/06/js-localforage-localstorage-indexdb/

責任編輯:武曉燕 來源: 大轉轉FE
相關推薦

2020-06-23 08:15:13

計算存儲分離

2024-04-26 08:28:08

高可用存儲架構

2023-10-26 08:06:53

圖片存儲前端

2022-09-14 21:15:44

互聯網存儲技術

2018-03-27 10:06:26

對象存儲演進

2022-03-11 08:35:06

數據庫存儲監控

2018-12-26 15:00:56

數據庫行式存儲列式存儲

2011-07-25 09:45:51

樹狀結構數據庫存儲

2021-07-05 09:40:25

iSCSI存儲協議以太網

2020-03-04 17:37:09

存儲系統硬件層

2019-12-04 10:13:58

Kubernetes存儲Docker

2018-11-21 10:36:29

Kubernetes存儲Docker

2018-04-24 09:05:09

容器存儲接口

2024-01-15 16:51:03

Redis數據存儲

2022-03-03 09:51:11

RedisCouchbase數據存儲

2023-02-06 09:44:35

美圖開源kv存儲

2023-10-31 19:28:48

GitHub存儲前端

2020-01-21 19:44:03

云存儲數據塊存儲

2020-07-28 08:00:03

存儲數據技術

2020-06-17 07:56:19

前端存儲數據
點贊
收藏

51CTO技術棧公眾號

精品国产乱码久久久久| 色爱av美腿丝袜综合粉嫩av| 999香蕉视频| 国产精品久久久久久久龚玥菲| 米奇777在线欧美播放| 在线色欧美三级视频| 做a视频在线观看| 91豆花视频在线播放| 国产欧美一区二区精品婷婷| 91福利视频导航| 国产精品一区二区三区四| 亚洲澳门在线| 日韩精品免费在线视频观看| 精品久久久久久中文字幕2017| 国产三区视频在线观看| 91麻豆产精品久久久久久| 国产精品一区久久久| 久久久久亚洲av成人片| 日韩免费视频| 亚洲国产一区自拍| 亚洲高清视频免费| 成人影院av| 亚洲黄一区二区三区| 日韩成人av电影在线| 亚洲精品国产片| 琪琪一区二区三区| 欧美一区亚洲一区| 黄色一级视频免费| 日韩精品免费一区二区在线观看 | 国产乱码一区二区三区四区| 中文在线免费二区三区| 亚洲综合男人的天堂| 亚洲一区二区精品在线| 日韩美女一级视频| 粉嫩蜜臀av国产精品网站| 国产综合香蕉五月婷在线| 久久永久免费视频| 日韩一级精品| 九色精品免费永久在线| 亚洲激情五月婷婷| 久久久久久综合网天天| 国产精品视频一区二区在线观看| 亚洲+变态+欧美+另类+精品| 欧美大片一区二区| 欧美一级xxxx| 97精品国产综合久久久动漫日韩 | 大桥未久一区二区| 9i精品一二三区| 国产欧美视频一区二区| 欧美国产综合视频| 你懂的在线看| 91麻豆.com| 久久精品第九区免费观看 | 天天想你在线观看完整版电影免费| 国产综合在线观看| 久久久久国产成人精品亚洲午夜| 久久亚裔精品欧美| 青青草免费在线| 国产亚洲制服色| 茄子视频成人在线观看| 国产永久免费高清在线观看| 中文字幕精品一区二区精品绿巨人| 日本黑人久久| 国产h视频在线观看| 国产精品你懂的在线| 亚洲一二三区在线| 久热国产在线| 一区二区三区四区中文字幕| 日本wwwcom| 日韩精品美女| 色诱亚洲精品久久久久久| 国产精品亚洲αv天堂无码| 欧美日韩视频免费观看| 欧美三级日韩三级| 日本一区二区三区在线免费观看| 日韩视频一二区| 精品福利一区二区三区免费视频| 在线视频 日韩| 亚洲日本三级| 日韩在线中文视频| 激情五月婷婷在线| 国产一区二区三区成人欧美日韩在线观看 | 亚洲欧洲另类| 国产福利精品av综合导导航| 一本色道久久综合精品婷婷| 国产精品正在播放| 久久66热这里只有精品| 国产乱视频在线观看| 中文字幕一区二区三区在线播放| 91精品国产吴梦梦| 香蕉伊大人中文在线观看| 在线免费亚洲电影| 善良的小姨在线| 亚洲人成网站77777在线观看| 神马久久桃色视频| 国产精品16p| 秋霞电影一区二区| 粉嫩av一区二区三区免费观看| 精品亚洲成a人片在线观看| 亚洲免费资源在线播放| 能在线观看的av| 国产在线视频欧美一区| 亚洲男人av电影| 黄色a级片在线观看| 一区二区国产精品| 亚洲一区二区三区乱码aⅴ| 欧美69xxxxx| 一区二区三区在线视频观看| 亚洲五月天综合| 98视频精品全部国产| 在线不卡国产精品| 成人免费区一区二区三区| 精品综合免费视频观看| 久久精品日韩精品| 欧美6一10sex性hd| 欧美日韩大陆在线| 精品人妻无码一区二区三区 | 特级西西444www高清大视频| 成人av资源站| 成人一区二区av| 欧美黄页在线免费观看| 亚洲人在线观看| 国产在线观看你懂的| 国产主播一区二区| 色99中文字幕| 都市激情亚洲一区| 亚洲国产婷婷香蕉久久久久久| 在线观看成人毛片| 久久99精品国产.久久久久久| 欧美国产综合视频| 在线男人天堂| 亚洲国产免费av| 免费在线观看国产精品| 精品午夜一区二区三区在线观看| 四虎影视永久免费在线观看一区二区三区| 日本不卡免费高清视频在线| 欧美成人三级在线| 九九热精品免费视频| 国产中文字幕一区| 老司机av福利| 伊人久久精品| 精品国产一区av| 91porny九色| 国产欧美综合在线观看第十页| 久草精品在线播放| 一区二区导航| 热久久免费视频精品| 青青草视频免费在线观看| 欧美视频精品一区| 97伦伦午夜电影理伦片| 午夜影院日韩| 欧美理论一区二区| 欧美国产大片| 这里只有精品久久| 夜夜骚av一区二区三区| 亚洲欧洲av另类| 国产调教打屁股xxxx网站| 欧美日韩三级| 国产不卡一区二区在线观看| 国产区美女在线| 亚洲精品久久久久久久久久久| 亚洲高清毛片一区二区| 国产亚洲一区字幕| 国产精品嫩草影院8vv8| 亚洲欧美亚洲| 国产一区免费| av亚洲一区二区三区| 最近2019年日本中文免费字幕| 一二三区在线播放| 伊人性伊人情综合网| 亚洲色图欧美另类| 国产一区白浆| 在线国产精品网| 视频一区日韩精品| 清纯唯美日韩制服另类| jzzjzzjzz亚洲成熟少妇| 日本免费一区二区视频| 久久天堂久久| 亚洲国产一二三区| 成人激情久久| 久久影院资源网| 午夜精品久久久久久久96蜜桃| 亚洲大型综合色站| 一区二区三区四区免费| 国产精品日本一区二区不卡视频| 色噜噜狠狠一区二区三区果冻| 大胸美女被爆操| 国产福利一区二区三区视频在线 | 久久久久久久毛片| 国产综合一区二区| 欧美不卡在线播放| 日韩理论片av| 国产在线资源一区| 日韩xxxxxxxxx| 国模一区二区三区白浆| 69堂免费视频| 久久精品久久久| 久久久水蜜桃| 亚洲综合资源| 亚洲天堂av一区| 日韩精品视频久久| 91精品亚洲| 精品一区二区三区三区| 日韩国产精品一区二区三区| 久久爱www.| 国产成人97精品免费看片| 日本aa在线| 中文字幕日韩av电影| 免费观看黄色一级视频| 欧美日韩一区二区三区免费看| 国产午夜精品无码一区二区| 国产精品盗摄一区二区三区| 短视频在线观看| 国产白丝精品91爽爽久久 | 黄在线观看免费网站ktv| www.亚洲免费视频| 日韩精品福利| 精品国产伦一区二区三区观看方式 | 国产日产欧美a一级在线| 自拍网站在线观看| 97色在线观看免费视频| 性欧美videoshd高清| 中文字幕在线日韩| 国产精品一区二区婷婷| 日韩精品中文字| 日本免费不卡视频| 精品免费日韩av| 精品黑人一区二区三区国语馆| 欧美色成人综合| 免费黄色av片| 日韩欧美在线视频免费观看| 日韩欧美三级在线观看| 亚洲国产婷婷综合在线精品| 亚洲天堂黄色片| 亚洲精品视频一区二区| 久久av红桃一区二区禁漫| 国产精品毛片无遮挡高清| 韩国女同性做爰三级| 久久久久久久久久久电影| 国产美女喷水视频| 91美女片黄在线观看| 99re久久精品国产| 91网上在线视频| 国产精品jizz| 久久女同性恋中文字幕| 亚洲专区区免费| 久久久亚洲精品一区二区三区| 精品夜夜澡人妻无码av| 99国产精品久久久久久久久久久 | 日韩黄色网络| 蜜桃精品久久久久久久免费影院 | 国产精品旅馆在线| 久久精品国产亚洲av麻豆| 成人国产在线观看| 亚洲av无码成人精品区| 高清在线观看日韩| 国产精品成人无码专区| 91蜜桃免费观看视频| 能免费看av的网站| 国产欧美日韩综合精品一区二区| 四虎国产成人精品免费一女五男| 国产精品免费视频观看| jizz18女人高潮| 日韩一区在线免费观看| 岛国毛片在线观看| 三上悠亚激情av一区二区三区| av爱爱亚洲一区| 日本天堂在线播放| 不卡大黄网站免费看| 中文字幕一区二区三区人妻电影| 久久这里都是精品| 欧美三级网色| 无码国模国产在线观看| 国产一区免费观看| 最新亚洲精品| 中文字幕中文字幕99| 欧美午夜a级限制福利片| 久久亚洲中文字幕无码| 久久综合九色| 99中文字幕在线| 视频一区二区国产| 国产精品爽黄69| av免费在线一区| av在线不卡一区| 免费观看不卡av| 日韩精品在线播放| 亚洲三级在线视频| 国产传媒日韩欧美成人| 给我看免费高清在线观看| 中文字幕第一页久久| 日本熟女一区二区| 欧美专区亚洲专区| 亚洲xxx在线| 亚洲午夜久久久影院| 91精品国产91久久久久久青草| 97久久伊人激情网| 性欧美video另类hd尤物| 国产精品一区二区三区在线观| 精品国产精品| 久久手机在线视频| 蜜桃一区二区三区在线| 看全色黄大色黄女片18| 欧美激情一区二区三区蜜桃视频 | 亚洲男同1069视频| www.国产一区二区| 精品国内二区三区| 国产剧情在线| 国产成人精品一区二区在线 | 日本精品二区| 亚洲经典视频在线观看| 中文字幕线观看| 国产午夜精品久久久久久久 | 黄色网页网址在线免费| 奇米4444一区二区三区 | 久草网在线观看| 欧美日本韩国一区| 国产大学生校花援交在线播放 | 国产福利拍拍拍| 欧美一区三区二区| 番号集在线观看| 欧美亚洲成人网| silk一区二区三区精品视频| 国产又黄又爽免费视频| 日本美女视频一区二区| 女同毛片一区二区三区| 亚洲国产欧美日韩另类综合| 国产人妻精品一区二区三| 中文字幕欧美日韩| 一个人看的www视频在线免费观看| av成人观看| 亚洲大全视频| 色18美女社区| 亚洲视频免费在线| 亚洲天堂网视频| 中文字幕少妇一区二区三区| 国产精品字幕| 日韩精品伦理第一区| 日韩精品乱码免费| 91系列在线观看| 大片免费在线观看| 国产精品一区二区女厕厕| 精品视频免费| 我看黄色一级片| 中文字幕成人av| 中文字幕第三页| 日韩网站免费观看高清| 成人在线啊v| 9色视频在线观看| 国产91综合网| 91久久国产视频| 亚洲欧美日韩视频一区| 免费成人美女女| 神马影院我不卡| 极品尤物av久久免费看| 欧美精品xxxxx| 亚洲精品国精品久久99热 | 在线观看免费亚洲| av资源种子在线观看| 国产精品欧美日韩| 99九九热只有国产精品| 国产精品999.| 亚洲一区电影777| 视频二区在线| 国产成人福利视频| 色喇叭免费久久综合| 一个人看的视频www| 亚洲午夜激情av| 清纯唯美亚洲色图| 国产精品永久免费观看| 亚洲人成免费网站| v天堂中文在线| 在线视频你懂得一区| www.久久久久.com| 国新精品乱码一区二区三区18| 免费视频久久| 国产一区二区精彩视频| 亚洲成人精品久久| 亚洲天堂一区二区| 亚洲高潮无码久久| 久久综合五月天婷婷伊人| 中文字幕一区2区3区| 欧美黑人巨大xxx极品| 国产一区日韩| 亚洲精品无码久久久久久久| 国产成人精品亚洲日本在线观看| 美国av一区二区三区| 另类专区欧美蜜桃臀第一页| 久久黄色小视频| 这里只有视频精品| 亚洲视频一起| 无码少妇一区二区三区芒果| 亚洲乱码精品一二三四区日韩在线 | 亚洲在线国产日韩欧美| 国产性生活大片| 日韩国产精品视频| 2020国产精品小视频| 亚洲中文字幕无码专区| 亚洲欧美色图小说| 国产高清在线看| 国产精品国产三级欧美二区|