国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 web前端 css教程 HTML5 WebStorage(HTML5本地存儲技術)_CSS/HTML

HTML5 WebStorage(HTML5本地存儲技術)_CSS/HTML

May 16, 2016 pm 12:04 PM
html5

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

Cookie腫么了

cookie的缺陷是非常明顯的

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

WebStorage

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

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

WebStorage如何使用

在實現(xiàn)了WebStorage的瀏覽器中,頁面有兩個全局的對象localStorage和sessionStorage
HTML5 WebStorage(HTML5本地存儲技術)_CSS/HTML
以localStorage為例,看一段簡單的操作代碼

復制代碼 代碼如下:

var ls=localStorage;
??????????? console.log(ls.length);//0
??????????? ls.setItem('name','Byron');
??????????? ls.setItem(' Age','24');
??????????? console.log(ls.length);//2

??????????? // 遍歷本地存儲
??????????? for(var i=0;i??????????????? /*
??????????????????? 年齡:24
?????????????????? 姓名:拜倫
??????????????? */
??????????????? var key=ls.key(i);
??????????????? console.log(key+' : '+ls .getItem(key));
??????????? }

??????????? ls.removeItem('age');

???????????
??????????? for(var i=0;i??????????????? /*
??????????????????? 姓名:拜倫
?????????????? */
??????????????? var key=ls.key(i);
??????????????? console.log(key+' : '+ls.getItem(key));
??????????? }
??????????? ls.clear();//0
??????????? console.log(ls.length);

事件

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

復制代碼代碼如下:

接口 StorageEvent : Event {
? 只讀屬性 DOMString key;
? 只讀屬性 DOMString? oldValue;
?只讀屬性 DOMString? newValue;
?只讀屬性 DOMString url;
?只讀屬性存儲? storageArea;
};

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

在index.php中定義

復制代碼代碼如下:

復制代碼代碼如下:

window.addEventListener('storage',function(e) {
??????????????? console.log(e.key+' 由 '+e.url 更改為 '+e.oldValue+' 為 '+e.newValue+');
??????????????? console.log(e.storageArea ==localStorage) ;
??????????? },false);

??????????? localStorage.setItem('userName','Byron');

test.php

復制代碼代碼如下:

localStorage.setItem('userName ','卡斯帕');

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

需要注意的地方

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

HTML5 WebStorage(HTML5本地存儲技術)_CSS/HTML
?2. 由于localStorage和sessionStorage都是對象,所以我餓每年也可以通過”.key”或”[key]”的方式獲取、修改鍵值對,但不推薦這么做 。
HTML5 WebStorage(HTML5本地存儲技術)_CSS/HTML
?2. 由于localStorage和sessionStorage都是對象,所以我餓每年也可以通過”.key”或”[key]”的方式獲取、修改鍵值對,但不推薦這么做 。
復制代碼 代碼如下:

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

3.雖然localStorage存儲在本地,但不同的瀏覽器存儲存儲數(shù)據(jù)是獨立的,所以在Chrome上存儲的localStorage在FireFox上是獲取不到的。
4. localStorage和sessionStorage只能存儲字符串類型,對于復雜的對象可以使用ECMAScript提供的JSON對象的stringify和parse來處理,低版本IE可以使用json2.js
5.除了控制臺,Chrome還為本地存儲提供了非常直觀的顯示方式,調(diào)試的時候很方便
復制代碼 代碼如下:
localStorage.userName='Frank';HTML5 WebStorage(HTML5本地存儲技術)_CSS/HTMLconsole.log(localStorage['userName']);
3.雖然localStorage存儲在本地,但不同的瀏覽器存儲存儲數(shù)據(jù)是獨立的,所以在Chrome上存儲的localStorage在FireFox上是獲取不到的。4. localStorage和sessionStorage只能存儲字符串類型,對于復雜的對象可以使用ECMAScript提供的JSON對象的stringify和parse來處理,低版本IE可以使用json2.js5.除了控制臺,Chrome還為本地存儲提供了非常直觀的顯示方式,調(diào)試的時候很方便
本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1502
276
使用HTML5服務器序列事件處理重新連接和錯誤。 使用HTML5服務器序列事件處理重新連接和錯誤。 Jul 03, 2025 am 02:28 AM

使用HTML5SSE時,處理重連和錯誤的方法包括:1.了解默認重連機制,EventSource默認在連接中斷后3秒重試,可通過retry字段自定義間隔;2.監(jiān)聽error事件以應對連接失敗或解析錯誤,區(qū)分錯誤類型并執(zhí)行相應邏輯,如網(wǎng)絡問題依賴自動重連、服務器錯誤手動延遲重連、認證失效刷新token;3.主動控制重連邏輯,如手動關閉并重建連接、設置最大重試次數(shù)、結(jié)合navigator.onLine判斷網(wǎng)絡狀態(tài)以優(yōu)化重試策略。這些措施可提升應用穩(wěn)定性與用戶體驗。

將CSS和JavaScript與HTML5結(jié)構(gòu)有效整合。 將CSS和JavaScript與HTML5結(jié)構(gòu)有效整合。 Jul 12, 2025 am 03:01 AM

HTML5、CSS和JavaScript應通過語義化標簽、合理加載順序與解耦設計高效結(jié)合。1.使用HTML5語義化標簽如、提升結(jié)構(gòu)清晰度與可維護性,利于SEO和無障礙訪問;2.CSS應置于中,使用外部文件并按模塊拆分,避免內(nèi)聯(lián)樣式與延遲加載問題;3.JavaScript推薦放在前引入,使用defer或async異步加載以避免阻塞渲染;4.減少三者間強依賴,通過data-*屬性驅(qū)動行為、類名控制狀態(tài),統(tǒng)一命名規(guī)范提升協(xié)作效率。這些方法能有效優(yōu)化頁面性能與團隊協(xié)作。

使用HTML5服務器量事件(SSE)接收實時數(shù)據(jù)。 使用HTML5服務器量事件(SSE)接收實時數(shù)據(jù)。 Jul 02, 2025 pm 04:46 PM

Server-SentEvents(SSE)是HTML5提供的服務器向瀏覽器推送實時更新的輕量級方案。它通過HTTP長連接實現(xiàn)單向通信,適合股票行情、通知等場景。使用時創(chuàng)建EventSource實例并監(jiān)聽消息:consteventSource=newEventSource('/stream');eventSource.onmessage=function(event){console.log('收到消息:',event.data);};服務器端需設置Content-Type為text/event

為現(xiàn)代頁面宣布正確的HTML5 Doctype。 為現(xiàn)代頁面宣布正確的HTML5 Doctype。 Jul 03, 2025 am 02:35 AM

Doctype是告訴瀏覽器用哪種HTML標準解析頁面的聲明,現(xiàn)代網(wǎng)頁只需在HTML文件最開頭寫。其作用是確保瀏覽器以標準模式而非怪異模式渲染頁面,且必須位于第一行,前面不能有空格或注釋;正確寫法僅有一種,不推薦使用舊版本或其他變體;其他如charset、viewport等應放在部分。

用HTML5語義標記和微數(shù)據(jù)改善SEO。 用HTML5語義標記和微數(shù)據(jù)改善SEO。 Jul 03, 2025 am 01:16 AM

使用HTML5語義標簽和Microdata可提升SEO,因為它幫助搜索引擎更好理解頁面結(jié)構(gòu)與內(nèi)容含義。1.使用HTML5語義標簽如、、、、和來明確頁面區(qū)塊功能,有助于搜索引擎建立更準確的頁面模型;2.添加Microdata結(jié)構(gòu)化數(shù)據(jù)標注具體內(nèi)容,例如文章作者、發(fā)布日期、商品價格等,使搜索引擎能識別信息類型并用于富媒體摘要展示;3.注意正確使用標簽避免混淆、避免重復標記、測試結(jié)構(gòu)化數(shù)據(jù)有效性、定期更新以適應schema.org的變化,并結(jié)合其他SEO手段長期優(yōu)化。

解釋html5`  vs` '元素。 解釋html5` vs` '元素。 Jul 12, 2025 am 03:09 AM

是塊級元素,適合布局;是內(nèi)聯(lián)元素,適合包裹文字內(nèi)容。1.獨占一行,可設置寬高和邊距,常用于結(jié)構(gòu)布局;2.不換行,大小由內(nèi)容決定,適用于局部文本樣式或動態(tài)操作;3.選擇時應根據(jù)內(nèi)容是否需獨立空間判斷;4.不可嵌套在內(nèi),不適合做布局;5.優(yōu)先使用語義化標簽以提升結(jié)構(gòu)清晰度與可訪問性。

使用HTML5地理位置API獲取用戶當前位置。 使用HTML5地理位置API獲取用戶當前位置。 Jul 02, 2025 pm 05:03 PM

使用HTML5GeolocationAPI獲取用戶位置時,必須先獲得用戶授權,且需在合適時機請求并說明用途;基本方法為navigator.geolocation.getCurrentPosition(),包含成功回調(diào)、錯誤回調(diào)和配置參數(shù);常見失敗原因包括權限被拒、瀏覽器不支持、網(wǎng)絡問題等,應提供替代方案和明確提示。具體建議如下:1.在用戶操作觸發(fā)時請求權限,如點擊按鈕;2.使用enableHighAccuracy、timeout、maximumAge等參數(shù)優(yōu)化定位效果;3.錯誤處理應區(qū)分不同錯誤

了解HTML5媒體源擴展(MSE) 了解HTML5媒體源擴展(MSE) Jul 08, 2025 am 02:31 AM

MSE(MediaSourceExtensions)是W3C標準的一部分,允許JavaScript動態(tài)構(gòu)建媒體流,從而實現(xiàn)高級視頻播放功能。它通過MediaSource管理媒體源、SourceBuffer存放數(shù)據(jù)、TimeRanges表示緩沖時間范圍,使瀏覽器能動態(tài)加載并解碼視頻片段。使用MSE的流程包括:①創(chuàng)建MediaSource實例;②將其綁定到元素;③添加SourceBuffer接收特定格式數(shù)據(jù);④通過fetch()獲取分段數(shù)據(jù)并追加至緩沖區(qū)。常見注意事項有:①格式兼容性問題;②時間戳對

See all articles