成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談如何實現HTML5的離線存儲

存儲 存儲軟件
大家都知道Web App是通過瀏覽器來訪問的,所以離線狀態下是無法使用app的。其中web app中的一些資源并不經常改變,不需要每次都向服務器發送請求。這時應運而生的離線緩存就顯得尤為突出。通過把需要離線緩存儲的文件列在一個manifest配置文件中。這樣在離線情況下也可以使用app。

關于HTML5離線存儲原理及實現,筆者找到一篇介紹離線緩存的,感覺比之前看到的解釋的更透徹,新的知識點記錄如下:

大家都知道Web App是通過瀏覽器來訪問的,所以離線狀態下是無法使用app的。其中web app中的一些資源并不經常改變,不需要每次都向服務器發送請求。這時應運而生的離線緩存就顯得尤為突出。通過把需要離線緩存儲的文件列在一個manifest配置文件中。這樣在離線情況下也可以使用app。

離線存儲的manifest一般由三個部分組成:

[[230943]]

1.CACHE:表示需要離線存儲的資源列表,由于包含manifest文件的頁面將被自動離線存儲,所以不需要把頁面自身也列出來。

2.NETWORK:表示在它下面列出來的資源只有在在線的情況下才能訪問,他們不會被離線存儲,所以在離線情況下無法使用這些資源。尚學堂?百戰程序員陳老師指出,如果在CACHE和NETWORK中有一個相同的資源,那么這個資源還是會被離線存儲,也就是說CACHE的優先級更高。

3.FALLBACK:表示如果訪問***個資源失敗,那么就使用第二個資源來替換他,比如上面這個文件表示的就是如果訪問根目錄下任何一個資源失敗了,那么就去訪問offline.html。使用HTML5,通過創建cache manifest文件,可輕松創建web應用的離線版本。

HTML5引入了應用程序緩存,這意味著web應用可進行緩存,并可在沒有網絡時進行訪問。

應用程序緩存為應用帶來三個優勢:

離線瀏覽--用戶可在離線時使用它們。

速度--已經緩存的資源加載得更快。

減少服務器負載--瀏覽器將只從服務器下載更改過的資源。

原理和環境

如上面提到的HTML5的離線存儲是基于一個新建的.appcache文件的,通過這個文件上的解析清單離線存儲資源,這些資源就會像cookie一樣被存儲了下來。之后當網絡在處于離線狀態下時,瀏覽器會通過被離線存儲的數據進行頁面展示。就像cookie一樣,html5的離線存儲也需要服務器環境。這里提供一個小工具——簡易iis服務器,把它放在項目更目錄下,雙擊運行即可模擬服務器環境。

解析清單

在開始之前要先了解下manifest(即.appcache文件),上面的解析清單要怎么寫。manifest 文件是簡單的文本文件,它告知瀏覽器被緩存的內容(以及不緩存的內容)。

manifest 文件可分為三個部分:

CACHE MANIFEST - 在此標題下列出的文件將在***下載后進行緩存;

NETWORK - 在此標題下列出的文件需要與服務器的連接,且不會被緩存;

FALLBACK - 在此標題下列出的文件規定當頁面無法訪問時的回退頁面(比如 404 頁面);

在線的情況下,用戶代理每次訪問頁面,都會去讀一次manifest.如果發現其改變, 則重新加載全部清單中的資源。

***行,CACHE MANIFEST,是必需的:

1 CACHE MANIFEST / theme.css /logo.gif / main.js

上面的 manifest 文件列出了三個資源:一個 CSS 文件,一個 GIF 圖像,以及一個 JavaScript 文件。當 manifest 文件加載后,瀏覽器會從網站的根目錄下載這三個文件。然后,無論用戶何時與因特網斷開連接,這些資源依然是可用的。

NETWORK

白名單,使用通配符”*”. 則會進入白名單的open狀態. 這種狀態下.所有不在相關Cache區域出現的url都默認使用HTTP相關緩存頭策略.

下面的 NETWORK 小節規定文件 “login.asp” 永遠不會被緩存,且離線時是不可用的:

  1. NETWORK: login.asp 

可以使用*來指示所有其他資源/文件都需要因特網連接:

  1. NETWORK: * 
  2. FALLBACK 

下面的 FALLBACK 小節規定如果無法建立因特網連接,則用 “offline.html” 替代 /html5/ 目錄中的所有文件:

  1. ALLBACK:/html5/ /404.html 

注釋:***個 URI 是資源,第二個是替補。

對于瀏覽器來說,manifest的加載是要晚于其他資源的. 這就導致check manifest的過程是滯后的.發現manifest改變.所有瀏覽器的實現都是緊隨這做靜默更新資源.以保證下次pv,應用到更新.我們的產品已經更新了用戶卻要第二次進來才能夠看到,這樣用戶體驗也太差了吧,有什么方式能夠解決呢?好在html5給javascript提供了相關的API。

站點離線存儲的容量限制是5M,如果manifest文件,或者內部列舉的某一個文件不能正常下載,整個更新過程將視為失敗,瀏覽器繼續全部使用老的緩存,引用manifest的html必須與manifest文件同源,在同一個域下,在manifest中使用的相對路徑,相對參照物為manifest文件,CACHE MANIFEST字符串應在***行,且必不可少,系統會自動緩存引用清單文件的 HTML 文件。manifest文件中CACHE則與NETWORK,FALLBACK的位置順序沒有關系,如果是隱式聲明需要在最前面。

FALLBACK中的資源必須和manifest文件同源,當一個資源被緩存后,該瀏覽器直接請求這個絕對路徑也會訪問緩存中的資源。站點中的其他頁面即使沒有設置manifest屬性,請求的資源如果在緩存中也從緩存中訪問,當manifest文件發生改變時,資源請求本身也會觸發更新。

責任編輯:武曉燕 來源: 程序員交流學習
相關推薦

2012-12-03 13:53:38

IBMdW

2009-05-08 13:46:38

JavaScriptHTML5離線存儲

2017-01-03 18:09:33

HTML5本地存儲Web

2019-05-29 19:00:35

HTML5存儲方式前端

2011-06-07 15:14:09

HTML 5

2011-09-02 17:04:13

Sencha ToucHTML5圖表庫

2015-05-22 10:06:58

2015-08-13 15:56:44

HTML5本地存儲Localstorag

2013-01-24 10:26:04

HTML5HTML 5HTML5的未來

2023-05-29 10:38:00

HTML5離線存儲

2011-05-13 17:36:05

HTML

2023-03-16 09:00:00

HTML5HTML語言

2011-07-26 10:46:04

HTML 5

2011-03-11 08:38:17

HTML 5ASP.NET 4

2009-12-02 09:11:58

HTML5

2013-10-21 15:24:49

html5游戲

2011-12-28 15:32:46

HTML5移動App

2017-10-12 15:58:10

網站HTML5Manifest

2010-08-11 09:43:54

FlexHTML5

2012-01-04 00:10:52

ibmdw
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 激情婷婷 | 高清久久 | 久草在线在线精品观看 | 国产高清在线观看 | 国产影音先锋 | 国产精品一区2区 | 日韩视频―中文字幕 | 久久9999久久 | 男人天堂免费在线 | 羞羞的视频在线看 | 精品一区二区三区中文字幕 | 波多野结衣一区二区 | 中文字幕精品一区二区三区在线 | 欧美中国少妇xxx性高请视频 | 自拍视频一区二区三区 | 成人av片在线观看 | 一区二区三区中文字幕 | 久久精品免费一区二区 | 国产男女猛烈无遮掩视频免费网站 | 亚洲欧美在线一区 | 黄色免费在线观看网站 | 亚洲人成在线观看 | 91久久网站 | 亚洲精品成人在线 | 国产午夜精品一区二区三区在线观看 | 精品一二三区视频 | 日日夜夜精品免费视频 | 一级免费毛片 | 精品国产91乱码一区二区三区 | 97影院2| av网站免费看 | 国产视频一区二区 | 精品久久一区 | 91久久久久久久久久久 | 中文字幕精品一区 | 伊色综合久久之综合久久 | 成人午夜在线 | h网站在线观看 | 亚洲一区二区三区四区五区午夜 | 麻豆精品国产免费 | 亚洲综合在线播放 |