JavaScript基礎知識總結 15:JavaScript客戶端存儲

      網友投稿 1073 2025-04-01

      目錄


      一、cookie

      1、限制

      2、cookie的構成

      二、Web Storage

      三、sessionStorage對象

      四、localStorage對象

      五、IndexedDB

      1、數據庫

      2、對象存儲

      3、事務

      4、插入對象

      5、通過游標查詢

      6、索引

      六、總結

      七、JavaScript思維導圖

      一、cookie

      HTTP cookie通常也叫作cookie,最初用于在客戶端存儲會話信息。這個規范要求服務器在響應HTTP請求時,通過發送Set-Cookie HTTP頭部包含會話信息。

      1、限制

      cookie是與特定域綁定的,設置cookie后,它會與請求一起發送到創建它的域。這個限制能保證cookie中存儲的信息只對唄認可的接受者開發,不被其它域訪問。

      因為cookie存儲在客戶端機器上,所以為保證它不會被惡意利用,瀏覽器會施加限制。同時cookie也不會占用太多磁盤空間

      2、cookie的構成

      名稱,唯一標識cookie的名稱;

      值,存儲在cookie里的字符串值;

      域,cookie有效的域;

      路徑,請求URL中包含這個路徑才會把cookie發送到服務器;

      過期時間,標識何時刪除cookie的時間戳;

      安全標志,設置過后,只在使用SSL安全連接的情況下會把cookie發送到服務器;

      二、Web Storage

      Web Storage定義了兩個對象:

      localStorage

      sessionStorage

      Storage類型用于保存名/值對數據,直至存儲空間上限(由瀏覽器決定)。Storage 的實例與其他對象一樣,但增加了以下方法:

      clear(),刪除所有的值;

      getItem(name),取得給定name的值;

      key(index),取得給定數值位置的名稱;

      removeItem(name),刪除給定name的名/值對;

      setItem(name,value),設置給定name的值;

      三、sessionStorage對象

      sessionStorage對象只存儲會話數據,這意味著數據只會存儲到瀏覽器關閉。這跟瀏覽器關閉時會消失的會話cookie類似。存儲在sessionStorage中的數據不受頁面刷新的影響,可以在瀏覽器崩潰并重啟后恢復。

      因為sessionStorage對象與服務器會話緊密相關,所以在運行本地文件時不能使用,存儲在sessionStorage對象中的數據只能由最初存儲數據的頁面使用,在多頁應用程序中的用處有限。

      因為sessionStorage對象是Storage的實例,所以可以通過使用setItem()方法或直接給屬性賦值給它添加數據。

      四、localStorage對象

      在修訂的HTML5中,localStorage對象取代了globalStorage,作為客戶端持久存儲數據的機制。要訪問同一個localStorage對象,頁面必須來自同一個域、在相同的端口上使用相同的協議。

      因為localStorage是Storage的實例,所以可以像sessionStorage一樣使用localStorage。

      五、IndexedDB

      1、數據庫

      Indexed Database API 簡稱IndexedDB,是瀏覽器中存儲數據結構化數據的一個方案。IndexedDB用于代替目前已廢棄的Web SQL Database API。IndexedDB背后的思想是創造一套API,方便JavaScript對象的存儲和獲取,同時也支持查詢和搜索。

      IndexedDB的設計幾乎完全是異步的。

      IndexedDB是類似于MySQL的數據庫,與傳統數據庫的最大差別在于,IndexedDB使用對象存儲而不是表格存儲數據。IndexedDB數據庫就是一個在公共命名空間下的一組對象存儲,類似于NoSQL風格的實現。

      使用IndexedDB數據庫的第一步是調用indexedDB.open()方法,并給它傳入一個要打開的數據庫名稱。如果給定名稱的數據庫已經存在,則會發送一個打開它的請求;如果不存在,則會發送創建并打開這個數據庫的請求。這個方法會返回IDBRequest的實例,可以在這個實例上添加onerror和onsuccess事件處理程序。

      let db,request,version = 1; request = indexedDB.open("admin",version); request.onerror = (event) => alert(`Failed to open:${event.target.errorCode}`); request.onsuccess = (event) => { db = event.target.result; };

      1

      2

      3

      4

      5

      6

      7

      2、對象存儲

      3、事務

      事務要通過調用數據庫對象的transaction()方法創建,任何時候,只要想要讀取或修改數據,都要通過事務把所有修改操作組織起來。

      let transaction = db.transaction();

      如果不指定參數,則對數據庫中所有的對象的存儲有只讀權限。

      更具體的方式是指定一個或多個要訪問的對象存儲的名稱。

      let transaction = db.transaction(“users”);

      確保在事務期間只加載users對象存儲的信息。如果想要訪問多個對象存儲,也可以添加多個,逗號隔開。

      JavaScript基礎知識總結 15:JavaScript客戶端存儲

      4、插入對象

      拿到對象存儲的引用后,就可以使用add()或put()寫入數據了。這個兩個方法都接收一個參數,即要存儲的對象,并把對象保存到對象存儲。

      5、通過游標查詢

      使用事務可以通過一個已知鍵取得一條記錄。如果想要取得多條數據,則需要在事務中創建一個游標。游標是一個指向結果集的指針。與傳統數據庫查詢不同,游標不會事先收集所有結果。相反,游標指向第一個結果,并在接收到指令前不會主動查找下一條數據。

      需要在對象存儲上調用openCursor()方法創建游標。與其它IndexedDB操作一樣,openCursor()方法也返回一個請求,因此必須為它添加onsuccess和onerror事件處理程序。

      const transaction = db.transaction("users"); const store = transaction.objectStore("users"); const request = store.openCursor(); request.onsuccess = (event) => { db = event.target.result;//訪問對象存儲中的下一條記錄 }; request.onerror = (event) => { };

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      6、索引

      對某些數據集,可能需要為對象存儲指定多個鍵。

      要創建新索引,首先要取得對象存儲的引用,然后調用createIndex()。

      第一個參數是索引的名稱,第二個參數是索引屬性的名稱,第三個參數是包含unique的options對象。

      const transaction = db.transaction("users"); const store = transaction.objectStore("users"); const index = store.createIndex("username","username",{unique:true});

      1

      2

      3

      六、總結

      Web Storage定義了兩個對象用于存儲數據:sessionStorage,localStorage。前者用于嚴格保存瀏覽器一次會話期間的數據,因為數據會在瀏覽器關閉時被刪除。后者用于會話之外持久保存數據。

      IndexedDB 是類似于SQL數據庫的結構化數據存儲機制,不同的是,IndexedDB 存儲的是對象,而不是數據表。對象存儲是通過定義鍵然后添加數據來創建的。游標用于查詢對象存儲中的特定數據,而索引可以針對特定屬性實現更快的查詢。

      有了這些存儲手段,就可以在客戶端通過使用JavaScript存儲可觀的數據,因為這些數據沒有加密,所以要注意不能使用它們存儲敏感信息。

      七、JavaScript思維導圖

      JavaScript

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:wps表格怎么撤銷解除密碼(如何取消wps表格密碼)
      下一篇:如何替換啊(怎么替換掉)
      相關文章
      免费在线观看亚洲| 亚洲第一页日韩专区| 亚洲国产精品特色大片观看完整版| 亚洲 国产 图片| 国产亚洲视频在线| 久久精品熟女亚洲av麻豆| 亚洲成AV人片在WWW| 亚洲第一街区偷拍街拍| 亚洲人成图片网站| 亚洲AV无码无限在线观看不卡 | 亚洲国产精品张柏芝在线观看| 少妇中文字幕乱码亚洲影视 | 亚洲AV无码专区在线播放中文| 亚洲精品成人片在线观看精品字幕| 亚洲色大成网站WWW久久九九| 亚洲一区二区三区影院| 久久久久久久尹人综合网亚洲| 亚洲乳大丰满中文字幕| 亚洲精品无码不卡在线播HE| 精品国产_亚洲人成在线高清| 亚洲AV第一页国产精品| 久久精品国产亚洲AV大全| 亚洲三级电影网站| 亚洲电影在线播放| 久久狠狠爱亚洲综合影院 | 亚洲精品国精品久久99热一| 国产亚洲精品a在线观看app| 久久久亚洲精品视频| 久久久久亚洲精品日久生情| 亚洲伊人精品综合在合线| 亚洲午夜成人精品无码色欲| 亚洲AV无码片一区二区三区| 亚洲成av人片在线观看天堂无码| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 国产成人亚洲综合无| 中文字幕一精品亚洲无线一区| 亚洲成AV人在线观看天堂无码| 久久久久久亚洲Av无码精品专口 | 亚洲综合色视频在线观看| 国产亚洲精品无码成人| 久久久久亚洲AV片无码下载蜜桃 |