搜尋
首頁web前端H5教程HTML5本地儲存之WebStorage介紹

HTML5本地儲存之WebStorage介紹

Nov 13, 2020 pm 05:52 PM
html5本地儲存

HTML5本地儲存之WebStorage介紹

WebStorage是HTML5中本地儲存的解決方案之一,在HTML5的WebStorage概念引入之前除去IE User Data、Flash Cookie、Google Gears等看名字就不靠譜的解決方案,瀏覽器相容的本機儲存方案只有使用cookie。有同學可能會問,既然有了cookie本地存儲,為什麼還要引入WebStorage的概念?

Cookie腫麼了

cookie的缺陷是非常明顯的

#1.資料大小:作為儲存容器,cookie的大小限制在4KB左右這是非常坑爹的,尤其對於現在複雜的業務邏輯需求,4KB的容量除了存儲一些配置字段還簡單單值信息,對於絕大部分開發者來說真的不知指望什麼了。

2. 安全性問題:由於在HTTP請求中的cookie是明文傳遞的(HTTPS不是),帶來的安全性問題還是很大的。

3. 網路負擔:我們知道cookie會被附加在每個HTTP請求中,在HttpRequest 和HttpResponse的header中都是要被傳輸的,所以無形中增加了一些不必要的流量損失。

WebStorage

WebStorage是HTML新增的本機儲存解決方案之一,但不是為了取代cookie而製定的標準,cookie作為HTTP協定的一部分用來處理客戶端和伺服器通訊是不可或缺的,session正是依賴實現的客戶端狀態維持。 WebStorage的意圖在於解決本來不應該cookie做,卻只好用cookie的本地儲存。

WebStorage提供兩種類型的API:localStorage和sessionStorage,兩者的區別看名字就有大概了解,localStorage在本地永久性存儲數據,除非明確將其刪除或清空,sessionStorage存儲的數據只在會話期間有效,關閉瀏覽器則自動刪除。兩個物件都有共同的API

interface Storage {
  readonly attribute unsigned long length;
  DOMString? key(unsigned long index);
  getter DOMString getItem(DOMString key);
  setter creator void setItem(DOMString key, DOMString value);
  deleter void removeItem(DOMString key);  void clear();
};
  • length:唯一的屬性,只讀,用來取得storage內的鍵值對數量。
  • key:根據index取得storage的鍵名
  • getItem:根據key取得storage內的對應value
  • setItem:為storage內新增鍵值對
  • removeItem:根據鍵名,刪除鍵值對
  • clear:清空storage物件

使用

在實作了WebStorage的瀏覽器中,頁面有兩個全域的物件localStorage和sessionStorage

HTML5本地儲存之WebStorage介紹

以localStorage為例,看一段簡單的操作程式碼

var ls=localStorage;
            console.log(ls.length);//0
            ls.setItem('name','Byron');
            ls.setItem('age','24');
            console.log(ls.length);//2
            
            //遍历localStorage
            for(var i=0;i<ls.length><h3 id="事件">事件</h3>
<p>同時HTML5規定了一個storage事件,在WebStorage發生變化的時候觸發,可以用此監視不同頁面對storage的修改</p>
<pre class="brush:php;toolbar:false">interface StorageEvent : Event {
  readonly attribute DOMString key;
  readonly attribute DOMString? oldValue;
  readonly attribute DOMString? newValue;
  readonly attribute DOMString url;
  readonly attribute Storage? storageArea;
};
  • key:鍵值對的鍵
  • oldValue:修改之前的value
  • newValue:修改之後的value
  • url:觸發改動的頁面url
  • StorageArea:改變改變的Storage

#在index.php定義

<a>Test</a>
window.addEventListener('storage',function(e){
                console.log(e.key+' is changed form '+e.oldValue+' to '+e.newValue+' by '+e.url );
                console.log(e.storageArea ==localStorage);
            },false);
            
            localStorage.setItem('userName','Byron');

test.php

#
localStorage.setItem('userName','Casper');

在index.php頁面點選連結存取test.php時可以看到index .php的控制台輸出log:

userName is changed form Byron to Casper by http://localhost/test.php

true

為什麼比cookie好

1. 從容量上講WebStorage一般瀏覽器提供5M的儲存空間,用來儲存影片、圖片神馬的不夠,但對於絕大部分操作足矣

2.安全性上WebStorage並非作為HTTP header發送的瀏覽器,所以相對安全

3.從流量上講,因為WebStorage不傳送到伺服器,所以不必要的流量可以節省,這樣對於高頻次訪問或者針對手機行動裝置的網頁還是很不錯的。

這並不意味著WebStorage可以取代cookie,而是有了WebStorage後cookie能只做它應該做的事情了-作為客戶端與伺服器互動的通道,保持客戶端狀態。所以光是作為本地儲存解決方案WebStorage是優於cookie的。

注意點

1.瀏覽器相容性,這個幾乎是所有HTML5新特性中最容易實施的了,因為IE8 的瀏覽器都支持,在IE7、IE6中可以使用IE User Data實作。

HTML5本地儲存之WebStorage介紹

2. 由於localStorage和sessionStorage都是對象,所以我餓每年也可以透過”.key」或”[key]”的方式取得、修改鍵值對,但不建議這麼做

localStorage.userName='Frank';
console.log(localStorage['userName']);

3.雖然localStorage儲存在本地,但不同的瀏覽器儲存儲存資料是獨立的,所以在Chrome上儲存的localStorage在FireFox上是取得不到的。

4. localStorage和sessionStorage只能儲存字串類型,對於複雜的物件可以使用ECMAScript提供的JSON物件的stringify和parse來處理,低版本IE可以使用json2.js

5.除了控制台,Chrome還為本地存儲提供了非常直觀的顯示方式,調試的時候很方便

HTML5本地儲存之WebStorage介紹

更多編程相關知識,請訪問:程式設計學習網站! !

以上是HTML5本地儲存之WebStorage介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:博客园。如有侵權,請聯絡admin@php.cn刪除
超越基礎:H5代碼中的高級技術超越基礎:H5代碼中的高級技術May 02, 2025 am 12:03 AM

H5的高級技巧包括:1.利用進行複雜圖形繪製,2.使用WebWorkers提升性能,3.通過WebStorage增強用戶體驗,4.實現響應式設計,5.利用WebRTC實現實時通信,6.進行性能優化和最佳實踐。這些技巧幫助開發者構建更動態、互動和高效的Web應用。

H5:網絡內容和設計的未來H5:網絡內容和設計的未來May 01, 2025 am 12:12 AM

H5(HTML5)將通過新元素和API提升網頁內容和設計。 1)H5增強了語義化標記和多媒體支持。 2)它引入了Canvas和SVG,豐富了網頁設計。 3)H5的工作原理是通過新標籤和API擴展HTML功能。 4)基本用法包括使用創建圖形,高級用法涉及WebStorageAPI。 5)開發者需注意瀏覽器兼容性和性能優化。

H5:網絡開發的新功能和功能H5:網絡開發的新功能和功能Apr 29, 2025 am 12:07 AM

H5帶來了多項新功能和能力,極大提升了網頁的互動性和開發效率。 1.語義化標籤如、增強了SEO。 2.多媒體支持通過和標籤簡化了音視頻播放。 3.Canvas繪圖提供了動態圖形繪製工具。 4.本地存儲通過localStorage和sessionStorage簡化了數據存儲。 5.地理位置API便於開發基於位置的服務。

H5:HTML5的關鍵改進H5:HTML5的關鍵改進Apr 28, 2025 am 12:26 AM

HTML5帶來了五個關鍵改進:1.語義化標籤提升了代碼清晰度和SEO效果;2.多媒體支持簡化了視頻和音頻嵌入;3.表單增強簡化了驗證;4.離線與本地存儲提高了用戶體驗;5.畫布與圖形功能增強了網頁的可視化效果。

HTML5:標準及其對Web開發的影響HTML5:標準及其對Web開發的影響Apr 27, 2025 am 12:12 AM

HTML5的核心特性包括語義化標籤、多媒體支持、離線存儲與本地存儲、表單增強。 1.語義化標籤如、等,提升代碼可讀性和SEO效果。 2.和標籤簡化多媒體嵌入。 3.離線存儲和本地存儲如ApplicationCache和LocalStorage,支持無網絡運行和數據存儲。 4.表單增強引入新輸入類型和驗證屬性,簡化處理和驗證。

H5代碼示例:實際應用和教程H5代碼示例:實際應用和教程Apr 25, 2025 am 12:10 AM

H5提供了多種新特性和功能,極大地增強了前端開發的能力。 1.多媒體支持:通過和元素嵌入媒體,無需插件。 2.畫布(Canvas):使用元素動態渲染2D圖形和動畫。 3.本地存儲:通過localStorage和sessionStorage實現數據持久化存儲,提升用戶體驗。

H5和HTML5之間的連接:相似性和差異H5和HTML5之間的連接:相似性和差異Apr 24, 2025 am 12:01 AM

H5和HTML5是不同的概念:HTML5是HTML的一個版本,包含新元素和API;H5是基於HTML5的移動應用開發框架。 HTML5通過瀏覽器解析和渲染代碼,H5應用則需要容器運行並通過JavaScript與原生代碼交互。

H5代碼的基礎:密鑰元素及其目的H5代碼的基礎:密鑰元素及其目的Apr 23, 2025 am 12:09 AM

HTML5的關鍵元素包括、、、、、等,用於構建現代網頁。 1.定義頭部內容,2.用於導航鏈接,3.表示獨立文章內容,4.組織頁面內容,5.展示側邊欄內容,6.定義頁腳,這些元素增強了網頁的結構和功能性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具