摘要:與服務器端通信每次都會攜帶在頭中,如果使用保存過多數據會帶來性能問題。但如果要存儲大量的復雜的數據,這并不是一種很好的方案。使用索引存儲數據,各種數據庫操作放在事務中執行。通過監聽正確類型的事件以等待操作完成。
cookie
生命期為只在設置的cookie過期時間之前一直有效,即使窗口或瀏覽器關閉。 存放數據大小為4K左右 。有個數限制(各瀏覽器不同),一般不能超過20個。與服務器端通信:每次都會攜帶在HTTP頭中,如果使用cookie保存過多數據會帶來性能問題。
http://www.runoob.com/js/js-c...
localStorage生命周期是永久,這意味著除非用戶顯示在瀏覽器提供的UI上清除localStorage信息,否則這些信息將永遠存在。存放數據大小為一般為5MB,而且它僅在客戶端(即瀏覽器)中保存,不參與和服務器的通信。
sessionStorage為每一個數據源維持一個存儲區域,在瀏覽器打開期間存在,包括頁面重新加載
apisessionStorage 和 localStorage 的用法基本一致,引用類型的值要轉換成JSON
保存數據到本地const info = { name: "Lee", age: 20, id: "001" }; sessionStorage.setItem("key", JSON.stringify(info)); localStorage.setItem("key", JSON.stringify(info));從本地存儲獲取數據
var data1 = JSON.parse(sessionStorage.getItem("key")); var data2 = JSON.parse(localStorage.getItem("key"));本地存儲中刪除某個保存的數據
sessionStorage.removeItem("key"); localStorage.removeItem("key");刪除所有保存的數據
sessionStorage.clear(); localStorage.clear();監聽本地存儲的變化
window.addEventListener("storage", function (e) { console.log("key", e.key); console.log("oldValue", e.oldValue); console.log("newValue", e.newValue); console.log("url", e.url); })indexedDB
在使用一個技術之前,先搞清楚它是什么,這對你的理解很重要,從DB就可以看出,它肯定是一個數據庫,而說到數據庫,有兩種不同類型的數據庫,就是關系型數據庫和非關系型數據庫,關系型數據庫如Mysql、Oracle等將數據存儲在表中,而非關系型數據庫如Redis、MongoDB等將數據集作為個體對象存儲。indexedDB就是一個非關系型數據庫,它不需要你去寫一些特定的sql語句來對數據庫進行操作,因為它是nosql的,數據形式使用的是json,
意義也許熟悉前端存儲的會說,不是有了LocalStorage和Cookies嗎?為什么還要推出indexedDB呢?其實對于在瀏覽器里存儲數據,你可以使用cookies或local storage,但它們都是比較簡單的技術,而IndexedDB提供了類似數據庫風格的數據存儲和使用方式。
首先說說Cookies,英文直接翻譯過來就是小甜點,聽起來很好吃,實際上并不是,每次HTTP接受和發送都會傳遞Cookies數據,它會占用額外的流量。例如,如果你有一個10KB的Cookies數據,發送10次請求,那么,總計就會有100KB的數據在網絡上傳輸。Cookies只能是字符串。瀏覽器里存儲Cookies的空間有限,很多用戶禁止瀏覽器使用Cookies。所以,Cookies只能用來存儲小量的非關鍵的數據。
其次說說LocalStorage,LocalStorage是用key-value鍵值模式存儲數據,但跟IndexedDB不一樣的是,它的數據并不是按對象形式存儲。它存儲的數據都是字符串形式。如果你想讓LocalStorage存儲對象,你需要借助JSON.stringify()能將對象變成字符串形式,再用JSON.parse()將字符串還原成對象。但如果要存儲大量的復雜的數據,這并不是一種很好的方案。畢竟,localstorage就是專門為小數量數據設計的,所以它的api設計為同步的。而IndexedDB很適合存儲大量數據,它的API是異步調用的。IndexedDB使用索引存儲數據,各種數據庫操作放在事務中執行。IndexedDB甚至還支持簡單的數據類型。IndexedDB比localstorage強大得多,但它的API也相對復雜。對于簡單的數據,你應該繼續使用localstorage,但當你希望存儲大量數據時,IndexedDB會明顯的更適合,IndexedDB能提供你更為復雜的查詢數據的方式。
indexedDB的特性1.對象倉庫
2.事務性
3.基于請求
4.異步
打開數據庫并且開始一個事務。
創建一個 object store。
構建一個請求來執行一些數據庫操作,像增加或提取數據等。
通過監聽正確類型的 DOM 事件以等待操作完成。
在操作結果上進行一些操作(可以在 request 對象中找到)
https://www.cnblogs.com/dengy...
https://segmentfault.com/a/11...
HTML5已經會放棄Web SQL Database
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/95920.html
摘要:與持久化工程師花了年時間打造,與同期出現。有持久化數據結構,如等,并發安全??偨Y篇幅有限,時間也比較晚了,關于前端數據的扁平化與持久化處理先講這么多了,有興趣的同學可以關注下,后面有時間會多整理分享。 (PS: 時間就像海綿里的水,擠到沒法擠,只能擠擠睡眠時間了~ 知識點還是需要整理的,付出總會有收獲,tired but fulfilled~) 前言 最近業務開發,從零搭建網頁生成器,...
摘要:使用方法介紹下載源碼,并執行安裝啟動服務,。如圖,我們創建一個接口可以實時預覽格式化的數據和提示錯誤。 使用 NodeJs 實現本地接口系統,解決前后臺開發最后一公里 無數據庫的情況下,實現數據持久化,通過api url返回json 數據,提高前端開發效率!項目地址 :local-ajax-pai 實現功能 完整的操作頁面 首頁展示所有保存的接口列表 創建的接口保存到本地 支持重...
摘要:的屬性在瀏覽器的控制臺中,可以直接輸入來查看??梢栽跒g覽器的控制臺中看出哪些是類型的,下帶綠色對勾的即是,如圖只要是類型的在控制臺通過是獲取不到的,也不能進行修改。當會話過期或被放棄后,服務器將終止該會話。在中,用取代了。 本文由云+社區發表 在前端面試中,有一個必問的問題:請你談談cookie和localStorage有什么區別??? localStorage是H5中的一種瀏覽器本地存...
摘要:前言開發過程少不了會遇到給某個狀態設置過期時間的需求例如進入頁面有個默認彈窗用戶關閉之后在小時之內再次打開不能再彈面對這樣需求我們首先想到的是需要設置一個變量去控制彈窗的隱藏因為默認是開啟的如何去保證這個變量的有效時間呢這里就涉及到數據的持 前言 開發過程少不了會遇到給某個狀態設置過期時間的需求,例如:進入頁面有個默認彈窗,用戶關閉之后在 1 小時之內再次打開不能再彈; 面對這樣需求我...
摘要:安裝后已經完成了安裝,并且等待其他的線程被關閉。激活后在這個狀態會處理事件回調提供了更新緩存策略的機會。并可以處理功能性的事件請求后臺同步推送。廢棄狀態這個狀態表示一個的生命周期結束。 showImg(https://segmentfault.com/img/bVbwWJu?w=2056&h=1536); 不知不覺,已經來到了最后的下篇 其實我寫的東西你如果認真去看,跟著去寫,應該能有...
閱讀 1058·2021-11-12 10:34
閱讀 985·2021-09-30 09:56
閱讀 668·2019-08-30 15:54
閱讀 2602·2019-08-30 11:14
閱讀 1465·2019-08-29 16:44
閱讀 3203·2019-08-29 16:35
閱讀 2489·2019-08-29 16:22
閱讀 2441·2019-08-29 15:39