應用緩存 AllicationCache
瀏覽器本身的緩存機制
- 瀏覽器會對靜態文件(html,css,js,圖片等)進行自動緩存
- 下次訪問該網頁,會讀取緩存
- 讀取緩存之前進行判斷,第一次判斷緩存時間和服務器上傳文件的最后一次修改時間。
- 如果緩存時間大于最后一次修改時間,證明緩存之后,服務器上沒有對文件進行修改,此時,瀏覽器會直接讀取緩存文件
- 如果緩存時間小于最后一次修改時間,證明緩存之后,服務器又對對文件進行修改,此時,瀏覽器會重新下載服務器上的靜態文件,并重新進行緩存
應用緩存的優點
- 進行離線瀏覽
- 速度,已緩存資源加載得更快
- 減少服務器負載,瀏覽器將只從服務器下載更新過或修改過的資源
Cache Manifest
- manifest屬性:如果啟用應用程序緩存,在文檔的
<html>
標簽中包含manifest屬性,每個指定了manifest的頁面在用戶對其訪問時都會被緩存。如果未指定 manifest 屬性,則頁面不會被緩存(除非在 manifest 文件中直接指定了該頁面)。 - manifest 文件的建議的文件擴展名是:".appcache"。
- 在html中使用屬性
manifest
引入 manifest文件 - 請注意,manifest 文件需要配置正確的 MIME-type,即 "text/cache-manifest"。必須在 web 服務器上進行配置。
- Manifest文件
- manifest 文件是簡單的文本文件,它告知瀏覽器被緩存的內容(以及不緩存的內容)。
- manifest 文件可分為三個部分:
- CACHE - 在此標題下列出的文件將在首次下載后進行緩存
- NETWORK - 在此標題下列出的文件需要與服務器的連接,且不會被緩存
- FALLBACK - 在此標題下列出的文件規定當頁面無法訪問時的回退頁面(比如 404 頁面)
如:
CACHE MANIFEST
#version: 0.0.1
緩存文件.html
緩存文件.css
NETWORK:
不緩存的文件.html
FALLBACK:
404.html
-
更新緩存
- 一旦應用被緩存,它就會保持緩存直到發生下列情況:用戶清空瀏覽器緩存;manifest 文件被修改;由程序來更新應用緩存
- 一旦文件被緩存,則瀏覽器會繼續展示已緩存的版本,即使您修改了服務器上的文件。為了確保瀏覽器更新緩存,您需要更新 manifest 文件。
applicationCache對象
- 屬性
- status 返回緩存的狀態
- 方法
- update() 發起應用緩存下載進程
- abort() 取消正在進行的緩存下載
- swapcache() 切換成本地最新的緩存環境
- 事件
- checking 用戶代理檢測更新或者在第一次嘗試下載manifest文件的時候,本事件往往是第一個觸發的
- noupdate 檢測出manifest文件沒有更新
- downloading 用戶代理發現更新并且正在取資源,或者第一次下載manifest文件列表中列舉的資源
- progress 用戶代理正在下載資源manifest文件中的需要緩存的資源
- updateready manifest中列舉的文件已經重新下載并更新成功,接下來js可以使用swapCache()方法更新到應用程序中
- error
- absolete manifest的請求出現404或者410錯誤,應用程序緩存被取消
WebRTC
- WebRTC是“網絡實時通信”(Web Real Time Communication)的縮寫,它主要用來讓瀏覽器實時獲取和交換視頻、音頻和數據。
作用
- 調用系統的攝像頭和麥克風
使用
-
navigator.getUserMedia(options, success, error)
- streams:表示包括哪些多媒體設備的對象
- success:回調函數,獲取多媒體設備成功時調用,接受一個MediaStream的實例作為參數
- error:回調函數,獲取多媒體設備失敗時調用,接受一個error對象作為參數
-
options
{ video:true/false, audio:true/false }
MediaStream
成功后的回調函自動傳入該對象作為參數
觸摸屏的事件
事件類型
- touchstart
- touchend
- touchmove
touchEvent
- targetTouches 屬性 獲取touchlist對象,一個 TouchList 對象,是包含了如下觸點的 Touch 對象:觸摸起始于當前事件的目標 element 上,并且仍然沒有離開觸摸平面的觸點. 只讀屬性.
touchList
- 表示所有touch對象的集合
- 一個touch對象表示一個觸摸點
touch對象
*clientX 觸點相對于可見視區(visual viewport)左邊沿的的X坐標. 不包括任何滾動偏移. 只讀屬性.
*clientY 觸點相對于可見視區(visual viewport)上邊沿的的Y坐標. 不包括任何滾動偏移. 只讀屬性.
*pageX 觸點相對于HTML文檔左邊沿的的X坐標. 當存在水平滾動的偏移時, 這個值包含了水平滾動的偏移. 只讀屬性.
*pageY 觸點相對于HTML文檔上邊沿的的Y坐標. 當存在水平滾動的偏移時, 這個值包含了垂直滾動的偏移. 只讀屬性.
*screenX
*screenY
*....