久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網
      最全最豐富的資訊網站

      html5應用緩存與Web Workers的圖文詳解

      在html5當中引入了應用程序緩存,這意味著web應用可以進行緩存,并且可以在沒有網絡連接的時候進行訪問。

      應用緩存的優(yōu)勢

      • 離線瀏覽,用戶可以在離線的時候瀏覽已經加載并且緩存好的數據

      • 加快加載速度。

      • 減少服務器負載。

      實現用緩存

      如果啟用應用程序緩存,需要在<html>標簽當中包含manifest屬性,manifest文件的建議擴展名是:”.appcache”

      manifest文件

      manifest文件為我們提供了三種緩存的方式:
      version n.n :version表示當前manifest的版本,當version發(fā)生變化的時候,此時當用戶再次加載的時候,會將CACHE標簽下列出的所有文件重新下載一次。
      – CACHE MANIFEST:在此標題下列出的文件,將在首次下載后進行緩存。
      – NETWORK: 在此標題下列出的文件需要與服務器的鏈接,且不會被緩存。
      – FALLBACK: 在此標題下列出的文件,規(guī)定訪問緩存失敗后,備用訪問的資源,第一個是訪問源,第二個是替換文件*.html /offline.html,例如404頁面。

      緩存的應用

      這里我創(chuàng)建一個web工程,并且新建一個html文件:
      index.html

      <!DOCTYPE html><html manifest="index.appcache">    <head>      <title>index.html</title>      <link rel="stylesheet" type="text/css" href="./css/style.css">    </head>     <body>      <h1>This is my HTML page</h1>    </body></html>

      style.css

      @CHARSET "UTF-8";h1 {    color: aqua;}

      可以看到這里,我的頁面很簡單,并且引用了一個style.css樣式文件。并且在<html>標簽當中,指定了緩存文件index.appcache.
      index.appcache 內容如下:

      CACHE MANIFEST#version 1.0CACHE:index.htmlcss/style.css

      可以看到,這里我們使用CACHE類型的緩存,表示需要緩存index.html和css/style.css這兩個文件。此時打開服務器,瀏覽該網頁,在關閉服務器,會發(fā)現該網頁同樣可以訪問,此時按下F12,打開開發(fā)者選項,會發(fā)現有如下緩存:
      html5應用緩存與Web Workers的圖文詳解

      同時也可以使用NETWORK類型的緩存,來表示那些文件是需要聯網下載的,這里我將css/style.css文件寫入到NETWORK類型的緩存當中。

      CACHE MANIFEST#version 1.0CACHE:index.htmlNETWORK:css/style.css

      首先需要手動清除一下之前緩存的記錄。然后打開服務器,瀏覽http://localhost:8080/html5cache/index.html,此時顯示效果如下:
      html5應用緩存與Web Workers的圖文詳解
      可以看到此時只是緩存了html頁面,并沒有緩存css/style.css文件,此時關閉服務器,再次刷新該頁面,效果如下:
      html5應用緩存與Web Workers的圖文詳解
      可以看到此時,就只是加載了html頁面,并么有加載css文件,所以h1標簽的字體是默認的。

      更新緩存

      如果需要更新緩存,比如這里我更改了html中的文字,此時再次訪問localhost:8080/html5cache/index.html 的時候,是不會加載最新的頁面文字的,這是因為瀏覽器默認會到緩存中查找,如果緩存中有,則直接從緩存中取出,因此我們需要更新緩存文件”index.appcache”中的version即可,如下:

      CACHE MANIFEST#version 1.1CACHE:css/style.cssindex.htmlNETWORK:FALLBACK:

      這里,我將version更改了1.1,此時再次訪問該頁面的時候, 是會到服務其下載最新的頁面,說到這里,緩存的缺點就出來了,就是哪怕我一個頁面中只更新一行文字,但是當我更改了”index.appcache”文件中的version值之后,就會重新將CACHE中定義的所有內容,重新下載一次。

      使用js自動更新緩存

      另外,我們還可以使用applicationcache對象來自動更新緩存。如下:

      <script type="text/javascript">           //添加頁面加載函數          window.addEventListener('load', function(e) {              //為applicationCache對象添加updateready事件             window.applicationCache.addEventListener('updateready', function(e) {              //表示manifest中列舉的文件已經重新下載并更新成功              if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {                            //使用swapCache()方法更新到應用程序中                window.applicationCache.swapCache();                              if (confirm('A new version of this site is available. Load it?')) {                                //重新加載當前頁面                  window.location.reload();                  }                } else {                //manifest文件沒有變化                  console.log("manifest 沒有改變");              }              }, false);            }, false);    </script>

      applicationcache是window對象的直接子對象,該對象的事件列表如下:
      html5應用緩存與Web Workers的圖文詳解
      status 返回緩存的狀態(tài)

      可選值 匹配常量 描述
      0 appCache.UNCACHED 未緩存
      1 appCache.IDLE 閑置
      2 appCache.CHECKING 檢查中
      3 appCache.DOWNLOADING 下載中
      4 appCache.UPDATEREADY 已更新
      5 appCache.OBSOLETE 失效

      方法

      方法名 匹配常量
      update() 發(fā)起應用程序緩存下載進程
      abort() 取消正在進行的緩存下載
      swapcache() 切換成本地最新的緩存環(huán)境

      web workers

      web workers是運行在后臺的腳本,獨立于其他的腳本,不會影響頁面的性能。類似于android開發(fā)中的handler。將繁重耗時的計算放到web worker中來實現,然后將處理的結果返回給主UI線程來顯示。

      web workers方法

      • postMessage() :用于向html頁面回傳一段消息。

      • terminate() :終止web workers,并且釋放計算機資源。

      web workers簡單實現

      下面使用web workers簡單實現一數字更新的demo:
      新建一個web工程,創(chuàng)建index.html

      <!DOCTYPE html><html><head lang="en">      <meta charset="UTF-8">      <title></title>      <script src="index.js"></script></head><body>      <p id="nump">0</p></body></html>

      這里在index.html文件當中引入了index.js文件。
      index.js

      var nump;  window.onload = function(){      nump = document.getElementById("nump");    var work = new Worker("count.js");      work.onmessage = function(e) {          //alert(e.data);          nump.innerHTML = e.data;      };  };

      可以看到,這里講更新數據的具體操作,使用Worker來更新,在worker當中加載了count.js文件來做一些耗時,復雜的計算。然后使用worker的onmessage回調方法,將count.js返回的結果重新顯示給nump。
      count.js

      var countNum = 0;function count(){      postMessage(countNum);//通過postMessage方法將計算結果回傳給調用者      countNum++;      setTimeout(count,1000);  }  count();

      count.js文件比較簡單,每隔一秒更新countNum的值,然后回傳給調用者,也就是這里的index.js

      此時運行效果如下:
      html5應用緩存與Web Workers的圖文詳解

      下面添加一個開始停止的控制按鈕:

       <button id="start">start</button>   <button id="stop">stop</button>

      index.js

      var nump;var work;  window.onload = function(){      nump = document.getElementById("nump");          var start = document.getElementById("start");          var stop = document.getElementById("stop");      start.onclick = startWorker;      stop.onclick = stopWorker;    };function startWorker() {      if (work) { //如果work存在,則直接返回          return;      } else {          work = new Worker("count.js");          work.onmessage = function(e) {              nump.innerHTML = e.data;          };      }  }function stopWorker() {      if (work) {//如果worker存在,則終止并且為其重新賦值          work.terminate();          work = null;      }  }

      此時運行效果如下:
      html5應用緩存與Web Workers的圖文詳解

      另外我們還可以通過navaigator對象的onLine屬性來判斷當前瀏覽器是否在線,該屬性屬于只讀屬性,會返回boolean類型的值。

      if(window.navigator.onLine) {    //在線} else {    //離線}

      贊(0)
      分享到: 更多 (0)
      網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號