js—localstorage (本地儲存)必知
HTML API
- localstorage 在瀏覽器的 API 有兩個:localStorage 和sessionStorage,存在於 window 物件中:localStorage 對應 window.localStorage,sessionStorage 對應window.sessionStorage。localStorage 和 sessionStorage 的區別主要是在於其生存期。
基本用法
- localStorage只要在相同的協議、相同的主機名、相同的埠下,就能讀取/修改到同一份localStorage資料。
- sessionStorage比localStorage更嚴苛一點,除了協議、主機名、埠外,還要求在同一視窗(也就是瀏覽器的標籤頁)下。
生存期
- localStorage理論上來說是永久有效的,即不主動清空的話就不會消失,即使儲存的資料超出了瀏覽器所規定的大小,也不會把舊資料清空而只會報錯。但需要注意的是,在移動裝置上的瀏覽器或各Native App用到的WebView裡,localStorage都是不可靠的,可能會因為各種原因(比如說退出App、網路切換、記憶體不足等原因)被清空。
- sessionStorage的生存期顧名思義,類似於session,只要關閉瀏覽器(也包括瀏覽器的標籤頁),就會被清空。由於sessionStorage的生存期太短,因此應用場景很有限,但從另一方面來看,不容易出現異常情況,比較可靠。
資料結構
- localstorage為標準的鍵值對(Key-Value,簡稱KV)資料型別,簡單但也易擴充套件,只要以某種編碼方式把想要儲存進localstorage的物件給轉化成字串,就能輕鬆支援。
- 舉點例子:把物件轉換成json字串,就能讓儲存物件了;把圖片轉換成DataUrl(base64),就可以儲存圖片了。另外對於鍵值對資料型別來說,"鍵是唯一的"這個特性也是相當重要的,重複以同一個鍵來賦值的話,會覆蓋上次的值。
容量限制
目前業界基本上統一為5M,已經比cookies的4K要大很多了
域名限制
由於瀏覽器的安全策略,localstorage是無法跨域的,也無法讓子域名繼承父域名的localstorage資料,這點跟cookies的差別還是蠻大的。
異常處理
localstorage在目前的瀏覽器環境來說,還不是完全穩定的,可能會出現各種各樣的bug,一定要考慮好異常處理。我個人認為localstorage只是資源本地化的一種優化手段,不能因為使用localstorage就降低了程式的可用性,那種只是在console裡輸出點錯誤資訊的異常處理我是絕對反對的。localstorage的異常處理一般用try/catch來捕獲/處理異常。
JavaScript 儲存物件
儲存物件方法
- key(n) 返回儲存物件中第 n 個鍵的名稱
- getItem(keyname) 返回指定鍵的值
- setItem(keyname, value) 新增鍵和值,如果對應的值存在,則更新該鍵對應的值。
- removeItem(keyname) 移除鍵
- clear() 清除儲存物件中所有的鍵
相關文章
- 本地儲存localStorage使用
- web本地儲存(localStorage、sessionStorage)WebSession
- H5本地儲存:sessionStorage和localStorageH5Session
- 使用LocalStorage實現Form表單內容本地儲存ORM
- HTML5本地儲存localStorage與sessionStorage詳解HTMLSession
- JavaScript使用localStorage儲存資料JavaScript
- localStorage設定儲存時間
- localStorage和sessionStorage儲存封裝Session封裝
- 前端儲存除了 localStorage 還有啥前端
- 突破本地離線儲存的JS庫 localforageJS
- 前端必須懂的計算機網路知識—(跨域、代理、本地儲存)前端計算機網路跨域
- JavaScript 本地儲存JavaScript
- web本地儲存Web
- OpenHarmony頁面級UI狀態儲存:LocalStorageUI
- 前端js儲存頁面為圖片下載到本地前端JS
- (十二)本地儲存及同步
- iOS如何本地儲存PHAssetiOS
- 聊聊前端的本地儲存前端
- 容器化RDS—— 計算儲存分離 or 本地儲存
- flutter本地資料儲存 sqfliteFlutter
- HTML5 之本地儲存HTML
- js實現canvas儲存圖片為png格式並下載到本地JSCanvas
- 儲存器的知識
- 給自己組一個本地儲存
- Javascrip—前端本地儲存講解(16)Java前端
- JavaScript本地儲存的方式有哪些JavaScript
- Props 混入 外掛 插槽 本地儲存
- Java常見的本地儲存方式Java
- 深入瞭解瀏覽器儲存:對比Cookie、LocalStorage、sessionStorage與IndexedDB瀏覽器CookieSessionIndex
- 小程式 - 陣列追加兼本地儲存陣列
- 前端錄屏並儲存影片到本地前端
- Android儲存多張圖片到本地Android
- 小程式-生成海報儲存本地相簿
- git儲存賬號密碼到本地Git密碼
- js中的儲存問題JS
- 本地儲存VS雲端儲存:區別不只是資料存放位置
- 使用 JDAudioCrawler 將下載的音訊儲存到本地儲存音訊
- Docker配置本地映象與容器的儲存位置Docker