精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日本黄色片免费观看| 天天干天天操天天做| 天天干在线观看| 久久午夜激情| 精品国内亚洲在观看18黄 | 一区二区三区导航| 国产亚洲欧美日韩一区二区| 亚洲成人手机在线观看| 日韩电影免费看| 中文字幕日韩精品一区| 久久99精品久久久久久三级| 色婷婷久久综合中文久久蜜桃av| 欧美 日韩 国产一区二区在线视频 | mm131亚洲精品| 51av在线| 亚洲三级电影全部在线观看高清| 欧美性大战久久久久久久蜜臀| 日本一区视频在线| 亚洲精品久久久久avwww潮水| 丝袜脚交一区二区| 亚州av一区二区| 九九热视频在线免费观看| 欧美aaaaa级| 欧美一区二区视频在线观看2020 | 日本一不卡视频| 欧美极品少妇xxxxx| 99热在线观看精品| 欧美日韩xxxx| 日韩成人小视频| 欧美人与性动交α欧美精品| 国产成人精选| 色婷婷香蕉在线一区二区| 乱熟女高潮一区二区在线| av在线第一页| 久久嫩草精品久久久久| 国产在线一区二区三区欧美| av中文字幕免费在线观看| 免费看欧美美女黄的网站| 欧美一区二区三区……| 日韩成人一区二区三区| 欧美 日韩 国产一区二区在线视频 | 丁香激情五月少妇| 亚洲国产合集| 亚洲精品美女免费| 超碰caoprom| 盗摄系列偷拍视频精品tp| 日韩欧美一二三| 日本高清免费观看| 97精品资源在线观看| 欧美日韩一区二区在线观看| 日韩免费高清在线| 怡红院成人在线| 日本高清不卡一区| 热久久精品免费视频| 在线成人视屏| 欧美性猛交xxxxxx富婆| www亚洲成人| 99欧美精品| 欧美日韩久久一区| 一本岛在线视频| 精品久久99| 欧美精品vⅰdeose4hd| 欧美成年人视频在线观看| 欧美成人毛片| 欧美一激情一区二区三区| 亚洲成人手机在线观看| 国产成人精品福利| 日韩电影中文字幕一区| 久久久久久国产精品无码| 精品日韩免费| 日韩小视频在线观看| www.xxxx日本| 最新亚洲视频| 日韩av快播网址| 做爰视频毛片视频| 国产麻豆精品一区二区| 国产精品一区二区在线观看| 国产精品国产高清国产| 国产欧美精品一区二区三区四区 | 91激情在线| 日韩毛片高清在线播放| 国产精品视频二| 超碰资源在线| 欧美日韩一区国产| 欧美丰满熟妇bbb久久久| 亚洲精品国模| 久久久国产一区二区| 国产真实夫妇交换视频| 久热精品视频| 91亚洲永久免费精品| 人妻无码一区二区三区久久99| 久久久美女毛片| 手机成人av在线| 狠狠操一区二区三区| 欧美性色aⅴ视频一区日韩精品| 国产精品嫩草影视| 色狼人综合干| 久热99视频在线观看| 男人的天堂一区| 久久国产精品第一页| 国产精品一区二区a| 国产福利第一视频在线播放| 一区二区三区中文字幕精品精品 | 99热国产在线观看| 久久国产精品区| 久久人人九九| 中文在线字幕免费观看| 欧美在线视频不卡| 亚洲视频在线播放免费| 天天综合精品| 国产精彩精品视频| 欧美一区二区三区成人片在线| 中文字幕第一区| 欧美 丝袜 自拍 制服 另类| va天堂va亚洲va影视| 亚洲视频电影图片偷拍一区| 久久国产在线观看| 久久91精品国产91久久小草| 久久久久一区二区三区| 欧美另类tv| 欧美日本在线视频| 人妻aⅴ无码一区二区三区| 好看的日韩av电影| 亚洲va男人天堂| 欧美被日视频| 在线看国产日韩| 日本少妇色视频| 亚洲青涩在线| 成人动漫在线观看视频| 国产秀色在线www免费观看| 91黄色免费网站| 性欧美丰满熟妇xxxx性仙踪林| 国产精品v欧美精品v日本精品动漫| 国产色婷婷国产综合在线理论片a| 久久久久久久影视| 色综合天天综合| 污片免费在线观看| 狠狠色综合网| 国产福利不卡| 爱看av在线| 日韩精品一区二区三区四区| 成人免费视频网站入口::| 免费视频一区二区三区在线观看| 激情伦成人综合小说| 91在线三级| 欧美精品一区二区不卡| 久久久久无码国产精品| 成人小视频在线| 九九热只有这里有精品| 福利片一区二区| 97香蕉久久夜色精品国产| 日韩在线视频观看免费| 亚洲成人精品一区| 欧美大片免费播放器| 一本久道久久综合婷婷鲸鱼| 久久久亚洲综合网站| 电影一区二区三| 在线观看久久av| 在线观看免费高清视频| 亚洲欧美日韩中文字幕一区二区三区 | 麻豆疯狂做受xxxx高潮视频| 国产suv精品一区二区三区| 国产成人在线小视频| 国产伦理久久久久久妇女| 91高清免费视频| 国产精品免费播放| 欧美二区在线观看| 国产a免费视频| 成人av电影免费观看| 亚洲熟女乱色一区二区三区| 成人aaaa| 99久久精品无码一区二区毛片| 99re6在线精品视频免费播放| 日韩精品在线观看视频| 天天干天天操天天爱| 国产精品久线观看视频| 欧美体内she精高潮| 亚洲精品乱码| 视频一区亚洲| 一区二区三区在线免费看 | 大型av综合网站| 欧美专区国产专区| 麻豆网站在线看| 亚洲缚视频在线观看| 91视频久久久| 亚洲男人的天堂av| 亚洲欧美色图视频| 极品少妇xxxx偷拍精品少妇| 国产av人人夜夜澡人人爽麻豆| 最近国产精品视频| 91在线国产电影| 成人福利视频| 久热99视频在线观看| 日本五码在线| 欧美一级生活片| 亚洲精品男人的天堂| 亚洲欧美日韩系列| 欧洲av一区二区三区| 国产不卡视频一区二区三区| 99精品视频播放| 国产综合精品| 中文字幕中文字幕一区三区| 色狠狠久久av综合| 91文字幕巨乱亚洲香蕉| 国产69精品久久久久按摩| 高清在线视频日韩欧美| 蜜桃视频网站在线观看| 亚洲欧美制服综合另类| www视频在线| 精品视频免费看| 中文字幕精品无码一区二区| 亚洲影院在线观看| www.涩涩爱| 26uuu亚洲综合色| 91精品人妻一区二区三区四区| 免费成人av在线播放| 欧美一区二区三区爽大粗免费| 中文一区一区三区免费在线观看| 欧美在线一区二区三区四区| 精品素人av| 91原创国产| 精品成人18| 成人精品在线观看| 素人一区二区三区| 国产suv精品一区二区三区88区| 国产黄色大片在线观看| 中文国产一区| 欧美激情欧美激情| av网站在线免费看推荐| 最近更新的2019中文字幕| 无码国产色欲xxxx视频| 日韩片之四级片| av网站在线免费看| 在线成人av网站| 在线观看亚洲一区二区| 在线观看免费视频综合| 少妇高潮av久久久久久| 欧美午夜精品在线| 午夜精品三级久久久有码| 亚洲福利视频三区| 久久久综合久久| 一区二区高清在线| 免费又黄又爽又色的视频| 亚洲欧美日韩中文字幕一区二区三区 | 日韩精品视频久久| 一区二区三区四区五区在线| 日日摸日日碰夜夜爽无码| 亚洲高清av| 国产av国片精品| 国产欧美日韩一区二区三区在线| 五月丁香综合缴情六月小说| 亚洲啪啪91| 久久美女福利视频| 久久久精品五月天| jizz欧美激情18| 免费xxxx性欧美18vr| 黄色三级视频在线| 老司机免费视频一区二区| 国产aⅴ爽av久久久久| 国产自产v一区二区三区c| 三级网站免费看| 成人精品国产免费网站| 朝桐光av一区二区三区| 久久美女艺术照精彩视频福利播放 | 久久综合给合| 国产精品区一区二区三在线播放| 久久99偷拍| 日本一区网站| 国产精品毛片久久| www.avtt| 日日欢夜夜爽一区| 中文字幕在线观看日| 国产成人免费在线视频| 国产精品无码专区| 欧美国产日本视频| 麻豆精品一区二区三区视频| 天天色 色综合| 中文字幕永久在线观看| 欧美一区二区三区视频在线观看 | 欧美在线在线| 久久福利电影| 国产精品热久久| 99久久综合99久久综合网站| 国产熟妇搡bbbb搡bbbb| 自拍视频在线观看一区二区| 91蜜桃视频在线观看| 欧美色大人视频| 亚洲av无码一区二区乱子伦| 亚洲人成电影网站色www| 精品视频在线一区二区| 欧美亚洲成人xxx| 欧美午夜三级| 激情久久av| 中文字幕一区二区三区久久网站| 日韩欧美精品在线观看视频| 国产一区美女在线| 少妇毛片一区二区三区| 亚洲乱码国产乱码精品精的特点| 日韩av大片在线观看| 欧美一区二区三区在线观看视频| 欧美理论在线观看| 欧美精品在线免费观看| 欧美色片在线观看| 精品一区二区三区免费毛片| 婷婷亚洲最大| 久久久精品三级| 成人免费黄色在线| 日韩激情小视频| 在线亚洲一区二区| 免费av一级片| 欧美日本啪啪无遮挡网站| 日本在线中文字幕一区二区三区 | 亚洲av无码乱码国产麻豆| 中文字幕av日韩| 午夜久久中文| 电影午夜精品一区二区三区| 欧美国产一区二区三区激情无套| 免费无码不卡视频在线观看| 国产激情精品久久久第一区二区| 日本人亚洲人jjzzjjz| 欧美性猛交xxxx免费看久久久| 亚洲av无码乱码国产精品久久| 日韩在线欧美在线| 91精品影视| 欧美男人的天堂| 亚洲欧洲日本一区二区三区| 中文字幕18页| 亚洲精选视频免费看| 国产又粗又猛又爽又黄视频| 一区二区三区黄色| 波多视频一区| 美日韩免费视频| 亚洲永久免费| 免费观看一级一片| 午夜精品一区二区三区电影天堂| 性欧美18一19性猛交| 欧美超级免费视 在线| 日韩08精品| av影院在线播放| 国产精品一二三四五| 可以直接看的黄色网址| 在线成人av影院| 影音先锋男人在线资源| 91九色在线观看| 欧美午夜在线视频| 69xxx免费视频| 白嫩亚洲一区二区三区| 青青草成人在线| 香蕉精品久久| 欧美综合在线观看视频| 国产日本一区二区| 精品国产青草久久久久96| 综合激情国产一区| 亚洲综合资源| 久久综合亚洲精品| 国产91丝袜在线播放九色| 国产网站在线看| 日韩电影在线观看永久视频免费网站 | 国产精品久久久久一区二区三区共 | 国产精品久久国产三级国电话系列| 中国精品18videos性欧美| 精品伦一区二区三区| 精品久久久一区| 九色在线视频| 国产在线观看精品| 亚洲成人免费| 国产视频精品视频| 色综合天天综合狠狠| 色影院视频在线| 99re视频| 麻豆成人精品| www.com.av| 精品福利在线导航| 韩日毛片在线观看| 亚洲精品无人区| 国产成人免费视频精品含羞草妖精| 久久9999久久免费精品国产| 亚洲免费精彩视频| 欧美成人福利| 亚洲 自拍 另类小说综合图区| 国产亚洲美州欧州综合国| 一个人看的www日本高清视频| 久久久久久一区二区三区 | av一本久道久久综合久久鬼色| 日韩在线播放中文字幕| 久久久久北条麻妃免费看| 北条麻妃在线一区二区免费播放| 日韩精品视频久久| 亚洲人123区| 青青草av免费在线观看| 91久久国产精品91久久性色| 亚洲深夜福利| 天堂av免费在线| 亚洲国产精品久久久久| 国产91亚洲精品久久久| 国产精品333| 亚洲柠檬福利资源导航| 黄上黄在线观看| 97在线中文字幕| 麻豆成人av在线|