html5 中建立manifest快取以及更新方法
今天學習了一下manifest的相關知識,整理記錄如下,以備將來查閱。
一、manifest
- MIME TYPE:text/cache-manifest
- 需要由你建立的:NAME.manifest
- 作用:主要是配置需要快取的檔案
-
在伺服器上新增MIME TYPE支:
比如 Apache 中可在 .htaccess 中新增:
AddType text/cache-manifest manifest
-
建立 NAME.manifest:
其中第一行的 CACHE MANIFEST 標識是一定要有的(測試時發現火狐不加也能快取成功,但不知是否有其他影響);
CACHE / NETWORK / FACKBACK 三個關鍵字用於不同功能,CACHE 快取;NETWORK 指不想快取的頁面;FALLBACK 是指當沒有響應時的替代方案,比如我想請求某個頁面,但這個頁面的伺服器掛了,那麼,我可以顯示另外一個指定的頁面;
檔案編碼最好使用utf-8;
行開頭“#”是註釋;
CACHE MANIFEST # VERSION # 直接快取的檔案d CACHE: m.js m1.js # 需要在時間線上的檔案 NETWORK: cache.html # 替代方案 FALLBACK: #/ajax/ ajax.html
3. html檔案改造
給 <html> 標籤加 manifest 屬性
<html manifest="m.manifest"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <script type="text/javascript" src="m.js"></script> </head> <body> ver:5<p> <input type="button" value="shwo_ver" onclick="show_ver();" /><p> <input type="button" value="load_js" onclick="load_js();" /><p> <input type="button" value="is_online" onclick="is_online();" /><p> </body> </html>
三、測試
chrome的開發者工具 》Console 會顯示建立快取的情況
Document was loaded from Application Cache with manifest http://127.0.0.1/work/html5/manifest/m.manifest Application Cache Checking event Application Cache Downloading event Application Cache Progress event (0 of 4) http://127.0.0.1/work/html5/manifest/m.js Application Cache Progress event (1 of 4) http://127.0.0.1/work/html5/manifest/m1.js Application Cache Progress event (2 of 4) http://127.0.0.1/work/html5/manifest/cache.html Application Cache Progress event (3 of 4) http://127.0.0.1/work/html5/manifest/cache1.html Application Cache Progress event (4 of 4) Application Cache UpdateReady event
四、關於更新
1.自動更新:瀏覽器除了在第一次訪問 Web 應用時快取資源外,只會在 cache manifest 檔案本身發生變化(即使是註釋變化)時更新快取。而 cache manifest 中的資原始檔發生變化並不會觸發更新。
2.手動更新:開發者也可以使用 window.applicationCache 的介面更新快取。方法是檢測 window.applicationCache.status 的值,如果是 UPDATEREADY,那麼可以呼叫 window.applicationCache.update() 更新快取。示範程式碼如下。
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
window.applicationCache.update();
}
五、線上狀態檢測和監視
1.檢測:navigator.onLine 屬性表示當前是否線上。如果為 true, 表示線上;如果為 false, 表示離線
2.監視:當線上 / 離線狀態切換時會觸發online/offline 事件,這兩個事件觸發在 body 元素上,並且沿著 document.body、document 和 window 的順序冒泡。
參考:
使用 HTML5 開發離線應用 http://www.189works.com/article-68089-1.html
相關推薦
html5 中建立manifest快取以及更新方法
今天學習了一下manifest的相關知識,整理記錄如下,以備將來查閱。 一、manifest MIME TYPE:text/cache-manifest 需要由你建立的:NAME.manifest 作用:主要是配置需要快取的檔案二、實現 在伺服器上新增MIME TYP
Django建立web專案例項中遇到的問題以及解決方法
前言 《Python程式設計從入門到實踐》書中,第18章介紹了使用Django模組建立web專案的實踐方法,但在實際操作過程中,發現因為版本更新等問題,會出現一些問題。經過搜尋解決問題、檢視文件等方法,將這些問題成功修復,專案正常執行。在此做個記錄,幫助其他同學快速改進
Python Django建立web專案例項中遇到的問題以及解決方法
目錄 前言 問題一: 'Specifying a namespace in include() without providing an app_name ' 1. 出現背景: 2. 原因: 3. 解決辦法: 問題二: Page not
記flume部署過程中遇到的問題以及解決方法(持續更新)
專案需求是將線上伺服器生成的日誌資訊實時匯入kafka,採用agent和collector分層傳輸,app的資料通過thrift傳給agent,agent通過avro sink將資料發給collector,collector將資料彙集後,傳送給kafka,拓撲結構如下:現將除
windows下更新pip和安裝ipython過程中遇到的問題以及解決方法
之前安裝pip和ipython的過程很順利,從未出錯,但是...自從重灌了win10的系統以後,安裝pip和ipython就各種出錯,可以說安裝之路很坎坷...下面說一下我遇到的問題和安裝的方法:因為我安裝的python是2.7的在用pip安裝ipython的時候,>p
Hadoop 2.0中的日誌收集以及配置方法
命名 tail his als 作業 fix enable 決定 RM Hadoop中的日誌包含三個部分,Application Master產生的運行日誌和Container的日誌。 一、ApplicationMaster產生的作業運行日誌 Application Mas
Hibernate中1+N問題以及解決方法
string 使用 number 一個 entity function func 屬性 criteria 1. Hibernate中的1+N問題描述 在多對一關系中,當我們需要查詢多的一方對應的表的記錄時,可以用一條sql語句就能完成操作。然而,在多
JAVA中getClass()以及getName()方法
getClass public final Class<?> getClass() 返回此 Object 的執行時類。返回的 Class 物件是由所表示類的 static synchronized 方法鎖定的物件。
資料倉庫中歷史拉鍊表的更新方法
轉自:http://lxw1234.com/archives/2015/08/473.htm 在之前介紹過資料倉庫中的歷史拉鍊表《資料倉庫資料模型之:極限儲存–歷史拉鍊表》, 使用這種方式即可以記錄歷史,而且最大程度的節省儲存。這裡簡單介紹一下這種歷史拉鍊表的更新方法。 本文中假設:
移動端網頁佈局中需要注意事項以及解決方法總結
移動端網頁佈局中需要注意事項以及解決方法總結,這份對我們在佈局移動端網頁的時候非常有用! winphone系統a、input標籤被點選時產生的半透明灰色背景怎麼去掉 <meta name="msapplication-tap-highlight"&nbs
HTML5中新增video標籤的使用方法
HTML5的video標籤是HTML5的一大特色方法如下: 1、<video src="test.mp4">瀏覽器</video> 2、 <video><source src="test.3gp">瀏覽器</video>
spark中各種連線操作以及實用方法
val a = sc.parallelize(Array(("123",4.0),("456",9.0),("789",9.0)) val b = sc.parallelize(Array(("123",8.0),("789",10))) val c = a.join
js中建立物件的5種方法
1、原始模式 var dog = { name: jack, length: 70, wang:function(){ console.log(this.name); } 2、工廠模式(批量) function creatdog
html5中的localStorage和sessionStorage常用方法和區別
Html5開發過程中,經常會遇到需要在客戶端儲存資料的情況,主角登場,localstorage sessionStorage,接下來我們介紹一下他們: localStorage:可以在客戶端長期儲存資料,關閉瀏覽器也有效,在所有同源視窗中共享。下面是它的一些常用方法: //
c#中類的學習以及使用方法
我們就拿一個學生類舉個例子吧。定義一個student類,其中包括使用者名稱、姓名、性別、出生年月等屬行以及 初始化各屬性、顯示各屬性、可以修改姓名等方法。實現並測試這個類。 首先我們新建一個類 class Student {
python中__getitem__()、__setitem__()以及__delitem__()方法
這個方法查過很多遍了都沒記住,現在特地寫出來,以防自己忘記。 getitem 專用方法很簡單。像普通的方法 clear,keys 和 values 一樣,它只是重定向到字典,返回字典的值。與之對應的是__setitem__()方法,把物件視作list或dict來對集合賦值。最後,還有一個
Mysql中建立使用者和授權的方法
建立使用者語句: create user 使用者名稱; eg: create user sa; 給建立的使用者授權: grant 許可權1,許可權2,...許可權n on 資料庫名稱.表名稱 to 使用者名稱@使用者地址 identified by '連線口令';
js和jquery中建立標籤新增屬性的方法
js方式建立標籤及新增屬性 <script> var tr = document.getElementById('tr_id1') //根據id屬性獲取tr標籤 var t
android-進階(3)-自定義view(2)-Android中View繪製流程以及相關方法的分析
最近正在學自定義view,這篇文章主要講view的繪製流程和一些相關的方法,淺顯易懂,寫的非常好,忍不住就轉載了。 前言: 本文是我讀《Android核心剖析》第13章----View工作原理總結而成的,在此膜拜下作者 。
AltiumDesigner中建立異形焊盤方法
關於異形焊盤的建立,可參照下面的半圓PAD的製作: 1.新建一個PCB檔案,然後在裡面畫一個半圓的Arc,即Place》Arc,並且要將其開口處封閉,即可用Place》Line封閉 2.選中整個半圓區域,而後執行Tools》Convert》Create Region f