pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

html5的離線存儲問題匯總

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

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

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

       對于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>  
復(fù)制代碼

       這樣可以控制請求到的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請求

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

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

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

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

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

       提供了如下API:

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

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

比如:

       1、如何計算PV UV,由于當(dāng)前頁面被強(qiáng)制加入manifest,那么PV 和UV的統(tǒng)計,成了一個難題,因?yàn)檎埱蟛辉偈前l(fā)送到服務(wù)器;

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

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

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

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

相關(guān)文檔推薦

由于實(shí)際運(yùn)行環(huán)境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達(dá)到,所以這部分不是開發(fā)者能夠決定的,開發(fā)者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標(biāo)簽、以及HTML5提供的對JavascriptAPI的擴(kuò)展。,HTML5中國,中國最大的HTML5中文門戶。
隨著 Hybrid 應(yīng)用的豐富,HTML5 工程師們已經(jīng)不滿足于把桌面端體驗(yàn)簡單移植到移動端,他們覬覦移動原生應(yīng)用人性化的操作體驗(yàn),特別是原生應(yīng)用與生俱來的豐富的手勢系統(tǒng)。HTML5 沒有提
你想要在自己網(wǎng)站上分享一個產(chǎn)品,或者是一個作品集,又或者僅僅只是一個靈感。在你發(fā)布到網(wǎng)上之前,你想讓它看起來有吸引力,專業(yè),或者至少得看起來像那么回事。那么你接下
H5廣告,包括H5廣告的設(shè)計流程,究竟有什么講究,和階段。為了能幫助更多的人了解H5廣告,我專門做了一個講義。同時,也讓我意外的收到了非常好反饋和認(rèn)!這是對我的極大鼓勵!我的
本文主要內(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)
主站蜘蛛池模板: 金属回收_废铜废铁回收_边角料回收_废不锈钢回收_废旧电缆线回收-广东益夫金属回收公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | ET3000双钳形接地电阻测试仪_ZSR10A直流_SXJS-IV智能_SX-9000全自动油介质损耗测试仪-上海康登 | 广州市哲铭油墨涂料有限公司,水性漆生产研发基地 | 温州在线网| 土壤检测仪器_行星式球磨仪_土壤团粒分析仪厂家_山东莱恩德智能科技有限公司 | 底部填充胶_电子封装胶_芯片封装胶_芯片底部填充胶厂家-东莞汉思新材料 | 天津热油泵_管道泵_天津高温热油泵-天津市金丰泰机械泵业有限公司【官方网站】 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 布袋除尘器-单机除尘器-脉冲除尘器-泊头市兴天环保设备有限公司 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 聚丙烯酰胺_阴离子_阳离子「用量少」巩义亿腾厂家直销,售后无忧 聚合甘油__盐城市飞龙油脂有限公司 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | 皮带机_移动皮带机_大倾角皮带机_皮带机厂家 - 新乡市国盛机械设备有限公司 | 东莞画册设计_logo/vi设计_品牌包装设计 - 华略品牌设计公司 | 四川成人高考_四川成考报名网 | 泰安办公家具-泰安派格办公用品有限公司 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 月嫂_保姆_育婴_催乳_母婴护理_产后康复_养老护理-吉祥到家家政 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 吨袋包装机|吨包秤|吨包机|集装袋包装机-烟台华恩科技 | 锌合金压铸-铝合金压铸厂-压铸模具-冷挤压-誉格精密压铸 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | 高速龙门架厂家_监控杆_多功能灯杆_信号灯杆_锂电池太阳能路灯-鑫世源照明 | 杭州成人高考_浙江省成人高考网上报名 | 雄松华章(广州华章MBA)官网-专注MBA/MPA/MPAcc/MEM辅导培训 | 讲师宝经纪-专业培训机构师资供应商_培训机构找讲师、培训师、讲师经纪就上讲师宝经纪 | 苏州伊诺尔拆除公司_专业酒店厂房拆除_商场学校拆除_办公楼房屋拆除_家工装拆除拆旧 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 烟台螺纹,烟台H型钢,烟台钢材,烟台角钢-烟台市正丰金属材料有限公司 | 金属抛光机-磁悬浮抛光机-磁力研磨机-磁力清洗机 - 苏州冠古科技 | 学考网学历中心| 航空障碍灯_高中低光强航空障碍灯_民航许可认证航空警示灯厂家-东莞市天翔航天科技有限公司 | 自动记录数据电子台秤,记忆储存重量电子桌称,设定时间记录电子秤-昆山巨天 | 重庆磨床过滤机,重庆纸带过滤机,机床伸缩钣金,重庆机床钣金护罩-重庆达鸿兴精密机械制造有限公司 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 焊接减速机箱体,减速机箱体加工-淄博博山泽坤机械厂 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 门禁卡_智能IC卡_滴胶卡制作_硅胶腕带-卡立方rfid定制厂家 | 云杂志网-学术期刊-首页 | 劳动法网-专业的劳动法和劳动争议仲裁服务网 |