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

html5的離線存儲問題匯總

HTML5的一個重要特性就是離線存儲,HTML5的離線存儲使用一個manifest文件來標明哪些文件是需要被存儲的,HTML5中國,中國最大的HTML5中文門戶。

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

       HTML5的離線存儲使用一個manifest文件來標明哪些文件是需要被存儲的,使用如 <html manifest='offline.manifest'> 來引入一個manifest文件,這個文件的路徑可以是相對的,也可以是絕對的,如果你的web應用很多,而且希望能集中管理manifest文件,那么靜態文件服務器是個不錯的選擇。

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

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

       這樣可以控制請求到的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
復制代碼
       其中 CACHE 不是必須存在的,可以直接在 CACHE MANIFEST 行之下直接寫需要緩存的文件,在這里指明的文件將被緩存到瀏覽器本地。在NETWORK之下指明的文件,是強制必須通過網絡資源獲取的,在FALLBACK下指明的是一種失敗的回調方案,比如上述index.php無法訪問,那么就發出404.htm請求

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

       當用戶本地再次聯網的時候,本地的離線存儲資源需要檢查是否需要更新,這個更新過程,也是通過manifest的更新來控制的,更新了manifest文件,瀏覽器會自動的重新下載新的manifest文件并在下一次刷新頁面的時候進行資源文件的重新請求(第三次刷新替換本地緩存為最新緩存),而且這個請求是全局性的,也就是所有在manifest緩存列表中的文件都會被請求一次,而不是單獨請求某個特定修改過的資源文件,因為manifest是不知道哪個文件被修改過了的。

       對于全局更新的擔心是不必要的,因為對于沒有更新過的資源文件,請求依舊是304響應,只有真正更新過的資源文件才是200.

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

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

       提供了如下API:

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

提供了如下的事件:

  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
復制代碼

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

比如:

       1、如何計算PV UV,由于當前頁面被強制加入manifest,那么PV 和UV的統計,成了一個難題,因為請求不再是發送到服務器;

       2、對于某個使用manifest的文件,其帶有的參數可能是隨機性的統計參數,如sid=123sss, sid=234fff ,尤其是比如商品詳情的id字段等,這樣每個頁面都自動加入到manifest中,將會帶來很大的存儲開銷,而且是毫無意義的;

       所以伴隨而來的,是如何在現有的體系架構下進行數據統計的難題,一個常規的方案是進入離線存儲頁面后自動發出ajax請求,以告知服務器統計PV UV;

       對于第二個問題,可能就比較棘手,但是將GET請求的方式改成POST的方式確實是個解決問題的方案。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

由于實際運行環境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發者能夠決定的,開發者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標簽、以及HTML5提供的對JavascriptAPI的擴展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應用的豐富,HTML5 工程師們已經不滿足于把桌面端體驗簡單移植到移動端,他們覬覦移動原生應用人性化的操作體驗,特別是原生應用與生俱來的豐富的手勢系統。HTML5 沒有提
你想要在自己網站上分享一個產品,或者是一個作品集,又或者僅僅只是一個靈感。在你發布到網上之前,你想讓它看起來有吸引力,專業,或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認!這是對我的極大鼓勵!我的
本文主要內容有:框架與組件、構建生態、開發技巧與調試、html、css與重構、native/hybrid/桌面開發、前端/H5優化、全棧/全端開發、研究實驗、數據分析與監控、其它軟技能、前端技術網
主站蜘蛛池模板: 在线观看午夜视频 | 国产成人精品久久二区二区91 | 亚洲不卡一 | 久久精品一级 | 欧美亚洲国产一区 | 91精品国产92 | wwww.8888久久爱站网 | 国产精品久久久久久吹潮 | 三级免费av | 精品1区2区 | 亚洲日韩中文字幕一区 | 国产99久久精品 | 手机av网| 国产精品一区二区三区在线 | 福利在线看| 亚洲国产高清高潮精品美女 | 国产精品免费在线 | 在线观看视频亚洲 | 欧美在线视频一区二区 | 一区二区在线 | 久久久久久亚洲国产精品 | 男女久久久 | 久久久久国产精品午夜一区 | 91丨九色丨国产在线 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 国产成人网 | 欧区一欧区二欧区三免费 | 久久国产精品免费一区二区三区 | 日韩中文视频 | 中文在线www| 日日精品 | 午夜私人影院在线观看 | 免费在线a视频 | 日韩成人免费av | 日本综合在线观看 | 亚洲国产精品成人无久久精品 | 欧美性影院| 日本三级电影在线观看视频 | 一区二区三区在线观看免费视频 | 在线成人 | av网站免费看 |