久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

html5的離線存儲(chǔ)問題匯總

HTML5的一個(gè)重要特性就是離線存儲(chǔ),HTML5的離線存儲(chǔ)使用一個(gè)manifest文件來標(biāo)明哪些文件是需要被存儲(chǔ)的,HTML5中國(guó),中國(guó)最大的HTML5中文門戶。

      HTML5的一個(gè)重要特性就是離線存儲(chǔ),所謂的離線存儲(chǔ)就是將一些資源文件保存在本地,這樣后續(xù)的頁面重新加載將使用本地資源文件,在離線情況下可以繼續(xù)訪問web應(yīng)用,同時(shí)通過一定的手法(更新相關(guān)文件或者使用相關(guān)API),可以更新、刪除離線存儲(chǔ)等操作;

       HTML5的離線存儲(chǔ)使用一個(gè)manifest文件來標(biāo)明哪些文件是需要被存儲(chǔ)的,使用如 <html manifest='offline.manifest'> 來引入一個(gè)manifest文件,這個(gè)文件的路徑可以是相對(duì)的,也可以是絕對(duì)的,如果你的web應(yīng)用很多,而且希望能集中管理manifest文件,那么靜態(tài)文件服務(wù)器是個(gè)不錯(cuò)的選擇。

       對(duì)于manifest文件,要求:文件的mime-type必須是 text/cache-manifest類型。如果你是JAVA工程,在你的web.xml中配置請(qǐng)求后綴為manifest的格式:

  1. <mime-mapping>
  2.         <extension>manifest</extension>
  3.         <mime-type>text/cache-manifest</mime-type>
  4. </mime-mapping>  
復(fù)制代碼

       這樣可以控制請(qǐng)求到的manifest文件格式為text/cache-manifest的。

manifest文件的格式:

  1. CACHE MANIFEST# 這一句必須存在,而且必須放在頭部# 指明緩存入口CACHE:index.htmlstyle.cssimages/logo.pngscripts/main.js# 以下資源必須在線訪問NETWORK:login.php# 如果index.php無法訪問則用404.html代替FALLBACK:/index.php /404.html
復(fù)制代碼
       其中 CACHE 不是必須存在的,可以直接在 CACHE MANIFEST 行之下直接寫需要緩存的文件,在這里指明的文件將被緩存到瀏覽器本地。在NETWORK之下指明的文件,是強(qiáng)制必須通過網(wǎng)絡(luò)資源獲取的,在FALLBACK下指明的是一種失敗的回調(diào)方案,比如上述index.php無法訪問,那么就發(fā)出404.htm請(qǐng)求

       這樣幾步就可以完成對(duì)離線存儲(chǔ)的支持。接下來要思考的,是如何更新離線存儲(chǔ)?

       當(dāng)用戶本地再次聯(lián)網(wǎng)的時(shí)候,本地的離線存儲(chǔ)資源需要檢查是否需要更新,這個(gè)更新過程,也是通過manifest的更新來控制的,更新了manifest文件,瀏覽器會(huì)自動(dòng)的重新下載新的manifest文件并在下一次刷新頁面的時(shí)候進(jìn)行資源文件的重新請(qǐng)求(第三次刷新替換本地緩存為最新緩存),而且這個(gè)請(qǐng)求是全局性的,也就是所有在manifest緩存列表中的文件都會(huì)被請(qǐng)求一次,而不是單獨(dú)請(qǐng)求某個(gè)特定修改過的資源文件,因?yàn)閙anifest是不知道哪個(gè)文件被修改過了的。

       對(duì)于全局更新的擔(dān)心是不必要的,因?yàn)閷?duì)于沒有更新過的資源文件,請(qǐng)求依舊是304響應(yīng),只有真正更新過的資源文件才是200.

       所以控制離線存儲(chǔ)的更新,需要2個(gè)步驟,一是更新資源文件,二是更新manifest文件,特別的,更新manifest文件是不需要修改什么特定內(nèi)容的,只要是這個(gè)文件隨意一處被修改,那么瀏覽器就會(huì)感知,對(duì)于我們的資源文件通常名稱是固定的,比如**.css,更新內(nèi)容不會(huì)帶有文件名更新的情況下,需要更新manifest文件怎么操作呢?一個(gè)比較好的方式是更新任意一處# 開頭的注釋即可,其目的只是告訴瀏覽器這個(gè)manifest文件被更新過。

       以上的這些內(nèi)容,其更新操作都是瀏覽器自動(dòng)完成的。同樣的,W3C定義了離線存儲(chǔ)的API規(guī)范:http://www.whatwg.org/specs/web- ... k/#applicationcache

       提供了如下API:

  1. // 更新,一般來說更新下載是通過用戶**(如瀏覽器)自動(dòng)完成的,但是這個(gè)方法適用于一些長(zhǎng)期打開的頁面,比如郵件系統(tǒng),可能這個(gè)頁面是長(zhǎng)期打開的,而不會(huì)有刷新動(dòng)作,所以這個(gè)就比較適合做自動(dòng)更新下載
  2. void update();
  3. // 取消
  4. void abort();
  5. // 替換緩存內(nèi)容 ,對(duì)于manifest文件的改變,通常是下一次的刷新才會(huì)觸發(fā)下載更新,第三次刷新才會(huì)切換使用新的緩存文件,通過這個(gè)方法,可以強(qiáng)制將緩存替換
  6. void swapCache();
復(fù)制代碼

提供了如下的事件:

  1. Event handler             Event handler event type
  2. onchecking             checking
  3. onerror                     error
  4. onnoupdate             noupdate
  5. ondownloading             downloading
  6. onprogress             progress
  7. onupdateready             updateready
  8. oncached                     cached
  9. onobsolete             obsolete
復(fù)制代碼

       最后說一個(gè)對(duì)于manifest比較特別的地方:對(duì)于某個(gè)文件a.htm,其中有 <html manifest='a.manifest'> ,那么離線存儲(chǔ)中,會(huì)自動(dòng)將a.htm加入到列表中,這意味著a.htm的再次刷新將從本地緩存中獲取,這樣的機(jī)制從官方得到的答復(fù)是“特別的設(shè)計(jì)”,而對(duì)我們來說,這種強(qiáng)加的特性在后續(xù)的開發(fā)過程中會(huì)有不少問題。

比如:

       1、如何計(jì)算PV UV,由于當(dāng)前頁面被強(qiáng)制加入manifest,那么PV 和UV的統(tǒng)計(jì),成了一個(gè)難題,因?yàn)檎?qǐng)求不再是發(fā)送到服務(wù)器;

       2、對(duì)于某個(gè)使用manifest的文件,其帶有的參數(shù)可能是隨機(jī)性的統(tǒng)計(jì)參數(shù),如sid=123sss, sid=234fff ,尤其是比如商品詳情的id字段等,這樣每個(gè)頁面都自動(dòng)加入到manifest中,將會(huì)帶來很大的存儲(chǔ)開銷,而且是毫無意義的;

       所以伴隨而來的,是如何在現(xiàn)有的體系架構(gòu)下進(jìn)行數(shù)據(jù)統(tǒng)計(jì)的難題,一個(gè)常規(guī)的方案是進(jìn)入離線存儲(chǔ)頁面后自動(dòng)發(fā)出ajax請(qǐng)求,以告知服務(wù)器統(tǒng)計(jì)PV UV;

       對(duì)于第二個(gè)問題,可能就比較棘手,但是將GET請(qǐng)求的方式改成POST的方式確實(shí)是個(gè)解決問題的方案。

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

由于實(shí)際運(yùn)行環(huán)境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會(huì)達(dá)到,所以這部分不是開發(fā)者能夠決定的,開發(fā)者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個(gè)自定義的視頻播放器,需要用到HTML5提供的video標(biāo)簽、以及HTML5提供的對(duì)JavascriptAPI的擴(kuò)展。,HTML5中國(guó),中國(guó)最大的HTML5中文門戶。
隨著 Hybrid 應(yīng)用的豐富,HTML5 工程師們已經(jīng)不滿足于把桌面端體驗(yàn)簡(jiǎn)單移植到移動(dòng)端,他們覬覦移動(dòng)原生應(yīng)用人性化的操作體驗(yàn),特別是原生應(yīng)用與生俱來的豐富的手勢(shì)系統(tǒng)。HTML5 沒有提
你想要在自己網(wǎng)站上分享一個(gè)產(chǎn)品,或者是一個(gè)作品集,又或者僅僅只是一個(gè)靈感。在你發(fā)布到網(wǎng)上之前,你想讓它看起來有吸引力,專業(yè),或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設(shè)計(jì)流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個(gè)講義。同時(shí),也讓我意外的收到了非常好反饋和認(rèn)!這是對(duì)我的極大鼓勵(lì)!我的
本文主要內(nèi)容有:框架與組件、構(gòu)建生態(tài)、開發(fā)技巧與調(diào)試、html、css與重構(gòu)、native/hybrid/桌面開發(fā)、前端/H5優(yōu)化、全棧/全端開發(fā)、研究實(shí)驗(yàn)、數(shù)據(jù)分析與監(jiān)控、其它軟技能、前端技術(shù)網(wǎng)
主站蜘蛛池模板: 亚洲一级大片 | 五月天丁香 | 色婷婷精品国产一区二区三区 | 亚洲精品在线观看视频 | 一区二区在线视频 | 一级片久久久 | 精品一区二区三区视频 | 日韩毛片免费 | 亚洲久久久 | 天天狠狠 | 免费在线观看黄色片 | 日韩欧美一区二区三区久久婷婷 | 日本丰满少妇裸体自慰 | 黄色一级小说 | 国产一级一片免费播放放a 男男成人高潮片免费网站 精品视频在线观看 | 日本黄色免费网站 | 日韩超碰 | 免费成人小视频 | 久草福利在线观看 | 精品影院 | 国产黄视频在线观看 | 五月天网址| 国产蜜臀av | 夜色在线影院 | 亚洲久久久久 | 亚洲天堂国产 | 亚洲天堂成人 | 久久精品导航 | 亚洲最新视频 | 天天干天天弄 | 狠狠se| 中文字幕理论片 | av免费不卡 | 国产黄色片视频 | 99re在线| 免费在线播放av | 欧美精品一二区 | 国产黄色精品 | 国产欧美一区二区精品性色超碰 | 欧美成人极品 | a级片在线 |