1. 程式人生 > >html5 中建立manifest快取以及更新方法

html5 中建立manifest快取以及更新方法

今天學習了一下manifest的相關知識,整理記錄如下,以備將來查閱。

一、manifest

  • MIME TYPE:text/cache-manifest
  • 需要由你建立的:NAME.manifest
  • 作用:主要是配置需要快取的檔案
二、實現
  1. 在伺服器上新增MIME TYPE支:

    比如 Apache 中可在 .htaccess 中新增:

    AddType text/cache-manifest manifest
  2. 建立 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

Hibernate1+N問題以及解決方法

string 使用 number 一個 entity function func 屬性 criteria 1. Hibernate中的1+N問題描述 在多對一關系中,當我們需要查詢多的一方對應的表的記錄時,可以用一條sql語句就能完成操作。然而,在多

JAVAgetClass()以及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)-AndroidView繪製流程以及相關方法的分析

最近正在學自定義view,這篇文章主要講view的繪製流程和一些相關的方法,淺顯易懂,寫的非常好,忍不住就轉載了。             前言: 本文是我讀《Android核心剖析》第13章----View工作原理總結而成的,在此膜拜下作者 。

AltiumDesigner建立異形焊盤方法

關於異形焊盤的建立,可參照下面的半圓PAD的製作: 1.新建一個PCB檔案,然後在裡面畫一個半圓的Arc,即Place》Arc,並且要將其開口處封閉,即可用Place》Line封閉 2.選中整個半圓區域,而後執行Tools》Convert》Create Region f