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)
主站蜘蛛池模板: 锌合金压铸-铝合金压铸厂-压铸模具-冷挤压-誉格精密压铸 | 三氯异氰尿酸-二氯-三氯-二氯异氰尿酸钠-优氯净-强氯精-消毒片-济南中北_优氯净厂家 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 中国产业发展研究网 - 提供行业研究报告 可行性研究报告 投资咨询 市场调研服务 | 金属波纹补偿器厂家_不锈钢膨胀节价格_非金属伸缩节定制-庆达补偿器 | 小型玉石雕刻机_家用玉雕机_小型万能雕刻机_凡刻雕刻机官网 | ASA膜,ASA共挤料,篷布色母料-青岛未来化学有限公司 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 丹佛斯变频器-丹佛斯压力开关-变送器-广州市风华机电设备有限公司 | 超细|超微气流粉碎机|气流磨|气流分级机|粉体改性机|磨粉机|粉碎设备-山东埃尔派粉体科技 | 成都茶楼装修公司 - 会所设计/KTV装修 - 成都朗煜装饰公司 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 开云(中国)Kaiyun·官方网站 - 登录入口| 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 权威废金属|废塑料|废纸|废铜|废钢价格|再生资源回收行情报价中心-中废网 | 茶叶百科网-茶叶知识与茶文化探讨分享平台 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 谷歌关键词优化-外贸网站优化-Google SEO小语种推广-思亿欧外贸快车 | VOC检测仪-甲醛检测仪-气体报警器-气体检测仪厂家-深恒安科技有限公司 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 视频教程导航网_视频教程之家_视频教程大全_最新视频教程分享发布平台 | 防火窗_耐火窗_防火门厂家_防火卷帘门-重庆三乐门业有限公司 | 周口风机|周风风机|河南省周口通用风机厂 | 超声波清洗机-超声波清洗设备定制生产厂家 - 深圳市冠博科技实业有限公司 | 厂房出租_厂房出售_产业园区招商_工业地产&nbsp;-&nbsp;中工招商网 | 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 医用酒精_84消毒液_碘伏消毒液等医用消毒液-漓峰消毒官网 | 能耗监测系统-节能监测系统-能源管理系统-三水智能化 | 废旧物资回收公司_广州废旧设备回收_报废设备物资回收-益美工厂设备回收公司 | 酒水灌装机-白酒灌装机-酒精果酒酱油醋灌装设备_青州惠联灌装机械 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 深圳APP开发公司_软件APP定制开发/外包制作-红匣子科技 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | 多功能三相相位伏安表-变压器短路阻抗测试仪-上海妙定电气 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 小型气象站_便携式自动气象站_校园气象站-竞道气象设备网 | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 |