《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 基于HTML5的Application Cache技術(shù)研究
基于HTML5的Application Cache技術(shù)研究
2015年微型機(jī)與應(yīng)用第20期
劉艷平,俞海英
解放軍理工大學(xué) 野戰(zhàn)工程學(xué)院,江蘇 南京 210007
摘要: HTML5新增了很多標(biāo)簽和功能,部分功能得到了深入的研究和應(yīng)用,但是關(guān)于應(yīng)用緩存的研究介紹并不多。Web應(yīng)用逐漸興起,提高Web應(yīng)用的用戶體驗(yàn)是當(dāng)前研究的要點(diǎn)。詳細(xì)介紹了應(yīng)用緩存的建立以及在線更新。對(duì)應(yīng)用緩存提高應(yīng)用載入速度的效應(yīng)進(jìn)行了驗(yàn)證測(cè)試,實(shí)驗(yàn)表明,應(yīng)用緩存對(duì)不同文件都能較大程度地提高應(yīng)用載入速度,文件越大提高的效果越明顯。
Abstract:
Key words :

  摘  要HTML5新增了很多標(biāo)簽和功能,部分功能得到了深入的研究和應(yīng)用,但是關(guān)于應(yīng)用緩存的研究介紹并不多。Web應(yīng)用逐漸興起,提高Web應(yīng)用的用戶體驗(yàn)是當(dāng)前研究的要點(diǎn)。詳細(xì)介紹了應(yīng)用緩存的建立以及在線更新。對(duì)應(yīng)用緩存提高應(yīng)用載入速度的效應(yīng)進(jìn)行了驗(yàn)證測(cè)試,實(shí)驗(yàn)表明,應(yīng)用緩存對(duì)不同文件都能較大程度地提高應(yīng)用載入速度,文件越大提高的效果越明顯。

  關(guān)鍵詞: HTML5;應(yīng)用緩存;Web應(yīng)用

0 引言

  HTML5是第五版HTML語(yǔ)言,同時(shí)也用來(lái)描述新一代的Web技術(shù)規(guī)范集合,包括HTML5、CSS3、svg、JavaScript[1]。隨著智能手機(jī)的普及、通信技術(shù)的快速發(fā)展和云計(jì)算技術(shù)的成熟,已進(jìn)入移動(dòng)互聯(lián)時(shí)代。基于B/S結(jié)構(gòu)的Web輕應(yīng)用由于其便捷性,逐漸在應(yīng)用領(lǐng)域占了一席之地,并成快速發(fā)展態(tài)勢(shì)。HTML5正是為了滿足新形勢(shì)下的Web需求而更新的技術(shù)規(guī)范。

  然而隨著多媒體技術(shù)的發(fā)展,相較于C/S結(jié)構(gòu),B/S結(jié)構(gòu)的應(yīng)用的缺點(diǎn)逐漸凸顯,Web應(yīng)用尤其是頁(yè)游的快速發(fā)展,應(yīng)用對(duì)網(wǎng)速的要求越來(lái)越高,服務(wù)器相應(yīng)速度受限,較大地影響著用戶體驗(yàn)效果。同時(shí)為了提高瀏覽效果,很多Web應(yīng)用采取了高質(zhì)量的圖片、視頻、音樂(lè),設(shè)計(jì)了絢麗的動(dòng)畫效果。這些文件的重復(fù)加載嚴(yán)重影響了網(wǎng)頁(yè)打開的速度,浪費(fèi)不必要的流量,增加了網(wǎng)絡(luò)負(fù)擔(dān)。Web應(yīng)用的數(shù)據(jù)本地存儲(chǔ)是優(yōu)化Web性能的重要手段,成為當(dāng)今Web領(lǐng)域的研究熱點(diǎn)之一[2-3]。

  HTML5的規(guī)范在2014年正式公布之后,學(xué)者和開發(fā)人員進(jìn)行了積極的研究。黃雄等人[4]對(duì)新增的<video>和<audio>標(biāo)簽進(jìn)行了研究,開發(fā)了跨瀏覽器的播放器;馮科融[5]研究了HTML5的網(wǎng)頁(yè)游戲的開發(fā);孫松柏[6]對(duì)HTML5的安全問(wèn)題進(jìn)行了深入研究。但是關(guān)于基于HTML5的Web應(yīng)用的客戶端本地緩存技術(shù)的相關(guān)研究不多,李燁民[7]概述了HTML5前端本地化技術(shù),但未提到Web緩存技術(shù);石堅(jiān)[8]研究了基于前端存儲(chǔ)的地圖切片技術(shù),較早應(yīng)用前端緩存技術(shù)。

1應(yīng)用緩存技術(shù)介紹

  HTML5允許用戶將Web應(yīng)用保存到本地磁盤上,就是把應(yīng)用程序所需的所有文件包括HTML、CSS、JavaScript下載到本地硬盤。這些緩存不會(huì)隨著用戶清除瀏覽器緩存而被清除,緩存起來(lái)的應(yīng)用程序文件會(huì)在聯(lián)網(wǎng)狀態(tài)之下進(jìn)行更新。從實(shí)際應(yīng)用效果看,Web應(yīng)用實(shí)現(xiàn)了像C/S結(jié)構(gòu)應(yīng)用的本地安裝。

  使用DOM Storage或Web SQL Database保存數(shù)據(jù)從而實(shí)現(xiàn)“本地安裝”的Web應(yīng)用在離線狀態(tài)下依然可以訪問(wèn)運(yùn)行,同時(shí)具備一套同步機(jī)制,再次回到在線狀態(tài)時(shí),能夠?qū)⒋鎯?chǔ)的數(shù)據(jù)發(fā)送到服務(wù)器。

  Web應(yīng)用緩存有3個(gè)優(yōu)點(diǎn):(1)支持離線訪問(wèn);(2)提高應(yīng)用載入速度;(3)降低服務(wù)器壓力[9]。

2 存儲(chǔ)技術(shù)的實(shí)現(xiàn)

  2.1 緩存的建立

  并不是Web應(yīng)用程序的所有清單都要進(jìn)行存儲(chǔ)。在將應(yīng)用緩存到本地前,首先要建立一個(gè)緩存清單,清單包含了所有要緩存文件的URL,然后在應(yīng)用程序主html文件的<html>標(biāo)簽內(nèi)設(shè)置manifest屬性[10],格式如下:

  <!DOCTYPE html>

  <html manifest=”Web.manifest”>

  <head>..........</head>

  <body>..........</body>

  </html>

  一般來(lái)說(shuō),一個(gè)Web應(yīng)用的正常運(yùn)行需要多個(gè)文件的支持,那么本地存儲(chǔ)的每個(gè)html文件就都需要設(shè)置<html manifest=>屬性來(lái)指向清單文件,這些文件指向同一個(gè)清單文件,這樣不僅可以清楚地表達(dá)它們是需要緩存起來(lái)的,而且是來(lái)自同一個(gè)Web應(yīng)用。服務(wù)器需要進(jìn)行配置才能識(shí)別清單文件的文件類型,常見的服務(wù)器配置方法如表1所示。

Image 001.png

  通常來(lái)說(shuō),復(fù)雜的Web應(yīng)用無(wú)法將依賴的所有資源都緩存起來(lái),通常需要一個(gè)復(fù)雜的清單。在復(fù)雜的清單文件中,用特殊的區(qū)域頭標(biāo)識(shí)該頭之后清單項(xiàng)的區(qū)域。區(qū)域頭有3種,分別是CACHE、NETWORK和FALLBACK,其中CACHE頭區(qū)域標(biāo)識(shí)的是需要存儲(chǔ)的文件;NETWORK區(qū)域頭標(biāo)識(shí)了該區(qū)域的URL中的資源從不緩存,總要通過(guò)網(wǎng)絡(luò)獲取,通常存放服務(wù)端的腳本資源,如果是*,表示CACHE區(qū)域之外的文件都需要從網(wǎng)絡(luò)下載;FALLBACK區(qū)域頭中的清單每行都包含兩個(gè)URL,第一個(gè)URL是一個(gè)前綴,標(biāo)識(shí)凡是和該前綴匹配的URL都不會(huì)存儲(chǔ)起來(lái),需要的話,會(huì)從網(wǎng)絡(luò)下載,第二個(gè)URL是指需要加載和存儲(chǔ)在緩存中的資源。清單格式具體如表2所示。

Image 002.png

  2.2 緩存的更新

  緩存的更新是瀏覽器檢查清單文件是否有更新而不是去檢查緩存的文件本身是否有更新。如果開發(fā)者修改了某個(gè)文件,比如JavaScript文件,要想使改變生效,就必須去更新清單文件,最簡(jiǎn)單便捷的方式是改變注釋里的版本號(hào)或修改日期。當(dāng)用戶主動(dòng)刪除應(yīng)用緩存后,頁(yè)面會(huì)被重新加載再次緩存。緩存更新緩存清單中的所有文件,當(dāng)其中的一個(gè)文件不能正常緩存更新時(shí),緩存失敗,使用原來(lái)的本地緩存。

  瀏覽器檢查清單文件和更新緩存的操作是異步的,緩存可以在載入應(yīng)用之前進(jìn)行,也可以和載入應(yīng)用同時(shí)進(jìn)行。因此,在更新清單文件之后,用戶必須載入應(yīng)用兩次才能保證最新的版本生效。

  緩存的更新的相關(guān)操作是通過(guò)檢測(cè)applicationCache.status屬性的值并調(diào)用applicationCache的事件程序進(jìn)行的,不同的值代表緩存不同的狀態(tài),通過(guò)事件偵聽結(jié)合當(dāng)前狀態(tài)采取相關(guān)動(dòng)作,具體如表3所示。

Image 003.png

  2.3 在線狀態(tài)更新

  Web2.0概念興起以來(lái),用戶和服務(wù)器的交互逐漸成為互聯(lián)網(wǎng)的主流。用戶不僅要從服務(wù)器請(qǐng)求數(shù)據(jù),還需要更新數(shù)據(jù)到服務(wù)器。Web離線應(yīng)用使用HTML5新引入的DOM Storage機(jī)制在本地存儲(chǔ)key/value鍵值對(duì)數(shù)據(jù)。這種機(jī)制保存數(shù)據(jù)規(guī)模大,安全度高。

  DOM Storage分為兩類:sessionStorage和localStorage。其中sessionStorage用于存儲(chǔ)與當(dāng)前瀏覽器窗口關(guān)聯(lián)的數(shù)據(jù),窗口關(guān)閉后,sessionStorage中存儲(chǔ)的數(shù)據(jù)將無(wú)法使用;localStorage用于長(zhǎng)期存儲(chǔ)數(shù)據(jù),窗口關(guān)閉后,localStorage中的數(shù)據(jù)仍然可以被訪問(wèn)。Web應(yīng)用離線數(shù)據(jù)存儲(chǔ)使用的是localStorage[11]。

  在離線狀態(tài)下,Web應(yīng)用將數(shù)據(jù)以key/value鍵值對(duì)形式保存在本地,當(dāng)應(yīng)用處于在線狀態(tài)時(shí),Web應(yīng)用將數(shù)據(jù)更新到服務(wù)器上。HTML5提供了setItem(key,value)、getItem(key)、removeItem(key)等方法對(duì)數(shù)據(jù)進(jìn)行更、查、刪操作。通過(guò)navigator.onLine屬性,可以檢測(cè)瀏覽器是否在線,當(dāng)window.navigator.onLine為ture時(shí),表示在線,為false時(shí),表示離線。同時(shí),在window對(duì)象上注冊(cè)在線和離線事件的處理程序,可以檢測(cè)網(wǎng)絡(luò)連接狀態(tài)的改變。

3 實(shí)驗(yàn)測(cè)試

  實(shí)驗(yàn)基于Opera 30瀏覽器,Apache 2.2,MySQL 5.2,Windows 8.1操作系統(tǒng)。測(cè)試內(nèi)容主要是不同文件類型在有本地緩存和無(wú)本地緩存情況下的載入時(shí)間,結(jié)果如表4所示。

Image 004.png

  通過(guò)對(duì)表4結(jié)果分析,利用緩存機(jī)制后,可快速進(jìn)入緩存,大幅度提高了應(yīng)用緩存時(shí)間。而且網(wǎng)頁(yè)使用了高清晰的圖片,本地緩存后能快速載入應(yīng)用。

4 結(jié)論

  HTML5是新一代的網(wǎng)頁(yè)開發(fā)標(biāo)準(zhǔn),新增加的功能將極大地提升開發(fā)效能和效率,有力推動(dòng)Web應(yīng)用的發(fā)展。在移動(dòng)互聯(lián)時(shí)代,應(yīng)用本地緩存技術(shù)將明顯地提升用戶體驗(yàn)。HTML5新技術(shù)的逐漸推廣,將促進(jìn)Web應(yīng)用突破網(wǎng)絡(luò)限制,使設(shè)計(jì)師更專注于應(yīng)用本身的開發(fā)。而且隨著WebGL技術(shù)的使用,結(jié)合本地緩存技術(shù),在享受酷炫效果時(shí),不會(huì)影響載入速度。下一步將進(jìn)行WebGL與本地緩存技術(shù)相結(jié)合的相關(guān)研究。

參考文獻(xiàn)

  [1] CRAVENS J, BURTOFT J. HTML5敏捷實(shí)踐[M].豆葆坤,譯.北京:電子工業(yè)出版社,2014.

  [2] ANTHES G. HTML5 leads a Web revolution[J]. Communications of the ACM, 2012:16-17

  [3] PREUVENEERS D, BERBERS Y, JOOSEN W. The future of mobile e-health application development: exploring HTML5 for context-aware diabetes monitoring[C]. Procedia Computer Science, 2013,21:343-351.

  [4] 黃雄.基于HTML5的視頻傳輸技術(shù)研究[J].廣東技術(shù)師范學(xué)院學(xué)報(bào),2014(11):20-25.

  [5] 馮科融,王和興,連加美,等.基于HTML5的3D多人網(wǎng)頁(yè)游戲?qū)崿F(xiàn)方案[J].微型機(jī)與應(yīng)用,2013,32(1):4-6.

  [6] 孫松柏,ABBASI A,諸葛建偉,等.HTML5安全研究[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(3):1-6,16.

  [7] 李燁民.基于HTML5的前端本地化存儲(chǔ)技術(shù)[J].成都大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,31(1):67-69.

  [8] 石堅(jiān),李治洪.基于B/S結(jié)構(gòu)的地圖切片前端預(yù)存儲(chǔ)技術(shù)[J].微型機(jī)與應(yīng)用,2014,33(19):5-7,11.

  [9] MDN. Using the application cache[DB/OL].[2015-04-12](2015-08-22).https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache.

  [10] FLANAGAN D. JavaScript權(quán)威指南(第6版)[M].淘寶前端團(tuán)隊(duì),譯.北京:機(jī)械工業(yè)出版社,2012.

  [11] 郭宗寶.使用 HTML5開發(fā)離線應(yīng)用[DB/OL].[2010-11-04]. http://www.ibm.com/developerworks/cn/Web/1011_guozb _html5off/.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美激情一区二区三区| 国产精品永久免费视频| 亚洲欧美另类综合偷拍| 日韩亚洲国产精品| 亚洲国产91色在线| 欧美一区观看| 新67194成人永久网站| 亚洲伊人观看| 亚洲永久字幕| 亚洲欧美日韩国产成人精品影院| 一区二区av在线| 日韩一级二级三级| 一本久道久久久| 一本色道久久88综合日韩精品| 亚洲精品女av网站| 亚洲免费av电影| 99亚洲一区二区| 一区二区三区高清不卡| 99综合视频| 亚洲一区二区毛片| 午夜免费日韩视频| 久久精品官网| 亚洲激情校园春色| 日韩一二在线观看| 国产精品99久久久久久www| 宅男噜噜噜66一区二区| 亚洲欧美国产不卡| 久久99伊人| 久久亚洲捆绑美女| 欧美成人免费一级人片100| 欧美精品激情| 欧美午夜电影网| 国产精品日韩欧美一区| 国产亚洲综合性久久久影院| 禁断一区二区三区在线 | 国产精品第一区| 国产精品亚洲综合一区在线观看 | 99精品欧美一区| 亚洲尤物精选| 亚洲国产成人精品久久| 日韩一级黄色av| 午夜精品视频在线观看| 久久一区激情| 欧美精品www在线观看| 国产精品成人免费| 国内精品久久久久久久果冻传媒 | 久久成人精品视频| 欧美国产激情二区三区| 欧美亚洲不卡| 国产一区欧美| 亚洲国产综合在线看不卡| 这里只有精品丝袜| 亚洲电影下载| 亚洲一区免费在线观看| 久久精品一二三区| 欧美黄色影院| 国产欧美一区在线| 亚洲精品久久久久久久久久久久久 | 亚洲欧洲一区| 午夜久久99| 日韩视频中午一区| 久久动漫亚洲| 欧美精品在线一区二区| 国产欧美精品一区二区色综合 | 在线亚洲观看| 亚洲国内精品| 亚洲欧美日韩成人高清在线一区| 久久伊人免费视频| 国产精品成人午夜| 亚洲人成人一区二区三区| 欧美亚洲一区二区在线观看| 一本久道久久综合狠狠爱| 久久国产日韩| 欧美性猛交一区二区三区精品| 国产欧美视频一区二区| 亚洲免费观看在线观看| 久久精品视频在线看| 亚洲一区二区三区激情| 欧美jjzz| 国产一区二区日韩| 亚洲午夜电影| 9l国产精品久久久久麻豆| 久久久久久91香蕉国产| 国产精品乱人伦中文| 亚洲国产精品一区二区久| 午夜精品久久99蜜桃的功能介绍| 日韩视频一区二区在线观看 | 欧美激情麻豆| 韩国三级电影久久久久久| 亚洲一区二区三区高清不卡| 亚洲美女在线一区| 蜜臀av国产精品久久久久| 国产日本欧美视频| 亚洲一区二区三区涩| 在线亚洲高清视频| 欧美大秀在线观看| 一区精品在线播放| 久久激情视频| 久久久久国产一区二区三区四区 | 久久精品国产清高在天天线| 欧美视频在线免费| 亚洲乱码久久| 亚洲最快最全在线视频| 欧美高清在线精品一区| 一区在线影院| 久久gogo国模裸体人体| 欧美一级理论片| 国产精品美女久久久免费| aa级大片欧美| 亚洲色图在线视频| 欧美日韩国产一区二区三区地区| 亚洲激情图片小说视频| 最新国产乱人伦偷精品免费网站 | 亚洲天堂av图片| 亚洲一二三区在线观看| 欧美日产国产成人免费图片| 亚洲国产精品999| 亚洲黑丝在线| 蜜桃视频一区| 亚洲第一色在线| 亚洲福利精品| 免费一级欧美片在线播放| 一区在线播放| 亚洲欧洲日韩在线| 欧美国产日韩一区二区| 亚洲欧洲日本在线| 9人人澡人人爽人人精品| 欧美精品综合| 亚洲乱码日产精品bd| 亚洲午夜av在线| 国产精品久久777777毛茸茸| 国产亚洲欧美日韩美女| 欧美一级片在线播放| 欧美在线免费观看亚洲| 国产亚洲精品久久久久久| 欧美一区二区三区四区高清| 久久久91精品国产一区二区精品| 国户精品久久久久久久久久久不卡 | 黄色一区二区三区四区| 亚洲欧洲日本一区二区三区| 欧美激情亚洲国产| 亚洲靠逼com| 亚洲欧美成人| 欧美国产欧美亚洲国产日韩mv天天看完整 | 午夜影院日韩| 国产亚洲精品资源在线26u| 久久精品国产视频| 欧美成人一区二区三区片免费| 91久久综合亚洲鲁鲁五月天| 一区二区三区鲁丝不卡| 国产精品久久久久久久久久三级| 亚洲淫性视频| 久久视频这里只有精品| 在线观看视频欧美| 一本色道久久综合| 国产精品久久久久久影视| 欧美在线不卡| 欧美激情五月| 亚洲一区二区三区色| 久久视频一区二区| 亚洲精品影院在线观看| 午夜在线精品偷拍| 伊人久久男人天堂| 亚洲视频欧洲视频| 国产亚洲精品aa| 日韩视频不卡中文| 国产精品毛片va一区二区三区 | 欧美1区2区| 99热免费精品在线观看| 久久av免费一区| 亚洲国产精品久久久久婷婷884 | 国产嫩草影院久久久久| 亚洲欧洲一区二区在线观看 | 国产日韩欧美二区| 亚洲伦理中文字幕| 国产伦精品一区二区三区照片91| 亚洲欧洲精品天堂一级| 国产精品麻豆va在线播放| 91久久精品一区| 国产精品日日摸夜夜添夜夜av| 亚洲激情成人在线| 国产精品黄色| 亚洲欧洲一区二区在线播放 | 99精品国产福利在线观看免费 | 国产精品永久免费| 99精品热视频| 国产一区欧美日韩| 亚洲欧美日韩国产一区二区三区| 狠狠网亚洲精品| 亚洲一区二区三区免费观看| 伊人久久婷婷| 欧美一区在线视频| 99精品免费视频| 免费亚洲一区| 欧美在线综合视频| 国产精品实拍| 国产精品99久久久久久人| 亚洲国产高潮在线观看| 久久精品国产免费| 亚洲一二区在线|