中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

【成都網站設計】HTML5 本地存儲( Local Storage )的前世今生 (一)

2022-07-06    分類: 網站設計

成都網站設計】HTML5 本地存儲( Local Storage )的前世今生 (一)

原文連接:http://diveintohtml5.org/storage.html (深入HTML5)

作者:Mark Pilgrim

譯者 : feijia (tiimfei@gmail.com)


譯者的話:上周讀到這篇關于html5 local storage 的綜述性文章覺得十分受益。這篇文章是作者的書HTML5 up & Running的的一個章節(jié),并在線以 CC-BY-3.0 License授權。 可以看到dojox.storage 是在HTML5標準成型前整個業(yè)界提供統(tǒng)一的本地存儲接口的框架。 即使是在今天,為了兼顧用戶較早版本瀏覽器的兼容性,dojox.storage 仍然有很大的作用. 文章較長,分兩部分翻譯。 今天是第一部分。

長久以來本地存儲能力一直是桌面應用區(qū)別于Web應用的一個主要優(yōu)勢.對于桌面應用(或者原生應用),操作系統(tǒng)一般都提供了一個抽象層用來幫助應用程序保存其本地數據

例如(用戶配置信息或者運行時狀態(tài)等). 常見的存放這些數據的方式有許多: 注冊表,INI文件,XML文件等等。 除了上面這些比較簡單的用來存放 鍵值對的存儲形式,如
果你需要使用更加復雜強大的存儲,那么你還可以進一步在應用程序中嵌入小型數據庫,或者開發(fā)出特定的數據文件格式。


遺憾的是,上面這些本地存儲方法對Web應用來說都是不適用的。在Web的發(fā)展史上,在很長時間里 Cookies是可以使用的在用戶本地存儲少量數據的方法。 但Cookies有一些非常明顯的缺陷,限制了它的應用:

1. cookie會被附加在每個HTTP請求中,所以無形中增加了流量。

2. 由于在HTTP請求中的cookie是明文傳遞的,所以安全性成問題。 (除非你的整個應用都是使用SSL來構建的)
3. Cookie的大小限制在4 KB左右。 對于復雜的存儲需求來說是不夠用的。

對于開發(fā)者來說,他們真正需要的是

1. 不受限的存儲空間

2. 數據保存在客戶端

3. 數據的生命周期可以跨越頁面的刷新(甚至瀏覽器關閉重新打開)

4. 本地數據不必每次都被重復的傳回服務器而導致流量增加

在HTML5之前,為了達成上述目標,人們開發(fā)出了許多方法,但是總是有一些不盡人意之處。


在HTML5之前的本地存儲的簡史

在互聯(lián)網發(fā)展早期,瀏覽器市場還很單一(處在地位的只有Netscape瀏覽器和IE)。在第一次瀏覽器大戰(zhàn)中,微軟的IE為了爭取更大的份額,它自己發(fā)明了許多額外附加的功能。 這些功能就包括動態(tài)HTML (DHTML) , 而動態(tài)HTML中就包含了一種稱為userData的技術。

userData 允許網頁存儲大64KB的基于XML的結構化數據(每個站點) 。獲信的站點,例如內網站點,可使用的存儲量可以增大到10倍,也即640K。 在使用userData時,IE不會彈出任何形式的對話框來要求用戶授權,也不允許程序增加本地存儲的容量。

在2002年,Adobe(譯者:那個時候其實應該是Macromedia) 在Flash6中引入了一個新的本地存儲功能,并命名為“Flash Cookies'。 這個名稱十分具有迷惑性,其實跟cookie沒什么關系。 在Flash中,這個功能被稱作 Local Shared Objects 。 簡單來說,這個技術允許Flash 對象存儲100KB的數據(每個站點 )。 基于此, Brad Neuberg 開發(fā)了一個稱為 AMASS(AJAX Massive Storage System) Ajax大容量存儲系統(tǒng))的 Flash到JavaScript的橋接原型接口,允許開發(fā)者在JavaScript中調用LSO,但是由于Flash的種種技術局限,這個原型并不大好用。 到2006年,隨著Flash 8 引入了ExternalInterface技術,在JavaScript中訪問LSO對象變得簡化了許多。這時Brad重寫了AMASS并把它整合到了流行的Dojo Toolkit 框架中, 并正式命名為dojox.storage。 Flash的這種技術允許每個站點存儲100KB的數據,超過100KB,則每增加超過一個數量級(如1MB, 10MB 等),它就會彈出對話框來要用戶確認并授權。

在2007年,Google啟動了著名的Gears項目, Gears是一個通過插件技術來增強瀏覽器功能的開源項目。 Gears提供了一套API來訪問一個基于SQLite的嵌入式SQL數據庫, 在獲得用戶的一次性授權后,應用程序可以通過Gears存儲不限數量的本地數據。

與此同時, Brad Neuberg 和其他人繼續(xù)開發(fā)dojox.storage , 希望能夠提供一套統(tǒng)一的JavaScript接口來封裝上面各種插件和接口。 到2009年時, dojox.storage 已經可以做到自動的偵測用戶瀏覽器所支持的本地存儲技術,并提供統(tǒng)一的訪問接口,包括Adobe Flash, Adobe AIR, Gears 以及早期 Firefox瀏覽器所提供的HTML5 存儲功能。

從我們前面的介紹可以看到這些五花八門的技術都有一個問題,他們要么是某個瀏覽器所特有的技術,要么依賴于某個第三方插件(flash或Gears). 雖然Dojox.storage非常有遠見的試圖去封裝這些區(qū)別,但是用戶仍然會因為底層技術的限制而在用戶體驗,允許存儲的數據量等方面無法統(tǒng)一。 這時,只有HTML5標準的出現才能徹底解決這些問題: 提供一套標準化的API, 被絕大多數瀏覽器支持,不用依賴任何第三方插件。



HTML5 本地存儲簡介

這里我們稱為HTML Storage的實際上是一個稱為 Web Storage 的標準, 它原來曾是HTML5標準的一部分,但由于某些政治因素,現在它被獨立出來。 某些瀏覽器廠商也稱它為 本地存儲(local storage),或者DOM存儲 (DOM Storage)

那么究竟什么是HTML5本地存儲 ? 簡單來說,它就是一種讓網頁可以把鍵值對存儲在用戶瀏覽器客戶端的方法。像Cookie一樣,這些數據不會因為你打開新網站,刷新頁面,乃至關閉你的瀏覽器而消失。 而與Cookie不同的時,這些數據不會每次隨著HTTP請求被發(fā)送到服務器端(當然如果你需要這么做,你可以自己編程實現 ). 因為這是HTML5規(guī)范的一部分,這一接口會被瀏覽器原生支持,不用依賴任何第三方插件。

那么,現在有哪些瀏覽器支持這一接口呢? 在這篇文章寫作時(譯者:2011年2月) 差不多所有主流瀏覽器的最新版都支持了,連IE8都支持了。


HTML5 Storage support IE Firefox Safari Chrome Opera iPhone Android 8.0+ 3.5+ 4.0+ 4.0+ 10.5+ 2.0+ 2.0+

在你的JS代碼中,你可以通過winow.localStorage 對象來訪問HTML5 本地存儲功能. 當然,考慮到瀏覽器兼容性,你在使用前應該先偵測一下你的用戶的瀏覽器是否支持.

view plain

新聞名稱:【成都網站設計】HTML5 本地存儲( Local Storage )的前世今生 (一)
標題鏈接:http://www.rwnh.cn/news/174757.html

網站建設、網絡推廣公司-創(chuàng)新互聯(lián),是專注品牌與效果的網站制作,網絡營銷seo公司;服務項目有網站設計

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

商城網站建設
兴海县| 怀宁县| 阿勒泰市| 赫章县| 舟山市| 叙永县| 三河市| 原阳县| 枝江市| 九寨沟县| 天全县| 兰考县| 新宁县| 昌都县| 冕宁县| 彭山县| 霸州市| 彭水| 乌兰县| 新竹市| 青铜峡市| 登封市| 新化县| 大石桥市| 邵武市| 松原市| 金山区| 天长市| 南溪县| 沂源县| 佛山市| 石门县| 永康市| 新野县| 洪湖市| 山西省| 桂阳县| 维西| 清水县| 阿拉尔市| 肥东县|