主頁 > 知識庫 > HTML5 WebStorage(HTML5本地存儲技術(shù))

HTML5 WebStorage(HTML5本地存儲技術(shù))

熱門標(biāo)簽:常州電話外呼系統(tǒng)招商 申請400電話移動 智能語音電銷機器人客戶端 廣州防封電銷機器人廠家 上海400電話辦理到易號網(wǎng) 成都企業(yè)外呼系統(tǒng) 南通電銷外呼系統(tǒng)軟件 山東電銷機器人軟件 洛陽防封卡外呼系統(tǒng)廠家

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

Cookie腫么了

cookie的缺陷是非常明顯的

1. 數(shù)據(jù)大?。鹤鳛榇鎯θ萜鳎琧ookie的大小限制在4KB左右這是非??拥?,尤其對于現(xiàn)在復(fù)雜的業(yè)務(wù)邏輯需求,4KB的容量除了存儲一些配置字段還簡單單值信息,對于絕大部分開發(fā)者來說真的不知指望什么了。
2. 安全性問題:由于在HTTP請求中的cookie是明文傳遞的(HTTPS不是),帶來的安全性問題還是很大的。
3. 網(wǎng)絡(luò)負擔(dān):我們知道cookie會被附加在每個HTTP請求中,在HttpRequest 和HttpResponse的header中都是要被傳輸?shù)?,所以無形中增加了一些不必要的流量損失。

WebStorage

WebStorage是HTML新增的本地存儲解決方案之一,但并不是為了取代cookie而制定的標(biāo)準(zhǔn),cookie作為HTTP協(xié)議的一部分用來處理客戶端和服務(wù)器通信是不可或缺的,session正是依賴于實現(xiàn)的客戶端狀態(tài)保持。WebStorage的意圖在于解決本來不應(yīng)該cookie做,卻不得不用cookie的本地存儲。
WebStorage提供兩種類型的API:localStorage和sessionStorage,兩者的區(qū)別看名字就有大概了解,localStorage在本地永久性存儲數(shù)據(jù),除非顯式將其刪除或清空,sessionStorage存儲的數(shù)據(jù)只在會話期間有效,關(guān)閉瀏覽器則自動刪除。兩個對象都有共同的API。

復(fù)制代碼 代碼如下:

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();
};

1、length:唯一的屬性,只讀,用來獲取storage內(nèi)的鍵值對數(shù)量。
2、key:根據(jù)index獲取storage的鍵名
3、getItem:根據(jù)key獲取storage內(nèi)的對應(yīng)value
4、setItem:為storage內(nèi)添加鍵值對
5、removeItem:根據(jù)鍵名,刪除鍵值對
6、clear:清空storage對象

WebStorage如何使用

在實現(xiàn)了WebStorage的瀏覽器中,頁面有兩個全局的對象localStorage和sessionStorage

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

復(fù)制代碼 代碼如下:

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;ils.length;i++){
                /*
                    age : 24
                    name : Byron
                */
                var key=ls.key(i);
                console.log(key+' : '+ls.getItem(key));
            }

            ls.removeItem('age');

           
            for(var i=0;ils.length;i++){
                /*
                    name : Byron
                */
                var key=ls.key(i);
                console.log(key+' : '+ls.getItem(key));
            }
            ls.clear();//0
            console.log(ls.length);

事件

同時HTML5規(guī)定了一個storage事件,在WebStorage發(fā)生變化的時候觸發(fā),可以用此監(jiān)視不同頁面對storage的修改

復(fù)制代碼 代碼如下:

interface StorageEvent : Event {
  readonly attribute DOMString key;
  readonly attribute DOMString? oldValue;
  readonly attribute DOMString? newValue;
  readonly attribute DOMString url;
  readonly attribute Storage? storageArea;
};

1、key:鍵值對的鍵
2、oldValue:修改之前的value
3、newValue:修改之后的value
4、url:觸發(fā)改動的頁面url
5、StorageArea:發(fā)生改變的Storage

在index.php中定義

復(fù)制代碼 代碼如下:

a href="test.php" target="_blank">Test/a>

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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發(fā)送的瀏覽器,所以相對安全
3.從流量上講,因為WebStorage不傳送到服務(wù)器,所以不必要的流量可以節(jié)省,這樣對于高頻次訪問或者針對手機移動設(shè)備的網(wǎng)頁還是很不錯的。
這并不意味著WebStorage可以取代cookie,而是有了WebStorage后cookie能只做它應(yīng)該做的事情了——作為客戶端與服務(wù)器交互的通道,保持客戶端狀態(tài)。所以僅僅作為本地存儲解決方案WebStorage是優(yōu)于cookie的。

需要注意的地方

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

 2. 由于localStorage和sessionStorage都是對象,所以我餓每年也可以通過”.key”或”[key]”的方式獲取、修改鍵值對,但不推薦這么做 。
復(fù)制代碼 代碼如下:

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

3.雖然localStorage存儲在本地,但不同的瀏覽器存儲存儲數(shù)據(jù)是獨立的,所以在Chrome上存儲的localStorage在FireFox上是獲取不到的。
4. localStorage和sessionStorage只能存儲字符串類型,對于復(fù)雜的對象可以使用ECMAScript提供的JSON對象的stringify和parse來處理,低版本IE可以使用json2.js
5.除了控制臺,Chrome還為本地存儲提供了非常直觀的顯示方式,調(diào)試的時候很方便

您可能感興趣的文章:
  • Javascript怎樣使用SessionStorage和LocalStorage
  • 如何在JavaScript中使用localStorage詳情
  • Vue基于localStorage存儲信息代碼實例
  • vue 使用localstorage實現(xiàn)面包屑的操作
  • JS+HTML5本地存儲Localstorage實現(xiàn)注冊登錄及驗證功能示例
  • 使用vuex存儲用戶信息到localStorage的實例
  • JavaScript學(xué)習(xí)教程之cookie與webstorage
  • 詳解vue中l(wèi)ocalStorage的使用方法
  • vue 界面刷新數(shù)據(jù)被清除 localStorage的使用詳解
  • 淺談Web Storage API的使用

標(biāo)簽:混顯 賀州 滄州 邵陽 鶴壁 貴州 萊蕪 廣安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML5 WebStorage(HTML5本地存儲技術(shù))》,本文關(guān)鍵詞  HTML5,WebStorage,本地,存儲,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5 WebStorage(HTML5本地存儲技術(shù))》相關(guān)的同類信息!
  • 本頁收集關(guān)于HTML5 WebStorage(HTML5本地存儲技術(shù))的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章