html5離線緩存技術
㈠ 怎麼學習html5裡面的離線緩存
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
HTML5離線存儲和本地緩存
一.離線存儲
有一個web應用有三個文件index.html,a.js,b.css,現在需要把js和css文件緩存起來
1.在index.html里加上<html manifest="test.manifest">
2.manifest清單格式如下
CACHE MANIFEST
#上面一句必須
#v1.0.0
#需要緩存的文件
CACHE:
a.js
b.css
#不需要緩存的文件
NETWORK:
*
#無法訪問頁面
FALLBACK:
404.html
3.manifest文件的mime-type必須是 text/cache-manifest類型
注意點:
1.對於每個index.html?id=1或index.html?id=2都會分別緩存index.html頁面,可以通過chrome瀏覽器Resources/Application Cache觀察
2.如果想更新緩存內容,只要修改下manifest文件即可,如改版本號v1.0.1
4.離線存儲如果資源有更新,可以通過如下代碼來監聽,但第一次載入還會是原來的版本
window.applicationCache.addEventListener('updateready',function(e){
if(window.applicationCache.status == window.applicationCache.UPDATEREADY){
window.applicationCache.swapCache();
if(confirm("loding new?")){
window.location.reload()
}
}
},false)
二.本地緩存
localStorage.setItem("key","value")
localStorage.getItem("key","value")
localStorage.removeItem("key")
localStorage.clear()
1.本地存儲永不過期,除非自己去清除
2.可以通過chrome瀏覽器Resources/Local Storage來查看
3.不同域下就算key相同取不到的值也不同,如localhost和127.0.0.1
㈡ HTML5的離線緩存是不是就是斷網了也可以跟沒斷網一樣用
離線緩存是html5新特性之一,簡單理解就是第一次載入後將數據緩存,在沒有清除緩存前提下,下一次沒有網路也可以載入,用在靜態數據的網頁或游戲比較好用。當然,Html5新的特性都不是所有瀏覽器都能支持的,離線緩存也一樣。反正IE9(包括)及IE9以下的瀏覽器目前是不支持的。
也可以理解成斷網和沒有斷網一樣,希望對你有幫助,望採納!
㈢ html5離線存儲緩存列表可以動態生成嗎
html5離線存儲緩存列表可以動態生成
最簡單來說,一個離線網路應用程序就是一個URL的列表——HTML,CSS,JavaScript,圖片,或者其他類型的資源。離線網路應用程序的主要指向一個叫做名單文件並用於定位網路伺服器上的資源列表。用於執行HTML5離線以用程序的網路瀏覽器將從名單文件中讀取URL列表,下載這些資源,將他們在本地緩存,並自動在這些本地副本改變時保持他們更新。當你嘗試在沒有網路連接時訪問網路應用程序,你的網路瀏覽器將自動切換並使用本地代替。
最新的主流的瀏覽器中都已添加了對HTML5的offlineStorage功能的支持,HTML5離線存儲功能非常強大,它的作用是:在用戶沒有與網際網路連接時,照樣可以訪問站點或應用,在用戶與網際網路連接時,自動更新緩存數據,是我們的網站的適應性和應用型更強!
例如一些在線游戲的某些文件可以使用離線存儲緩存到本地,這樣就不用每次刷新頁面都要下載了。對於傳統的瀏覽器緩存是無法控制的,瀏覽器有自己的緩存規則,我們無法實現緩存什麼不緩存什麼。但是使用離線存儲可以緩存任何內容,包括可以自定義哪些可以被緩存,哪些必須聯網才能訪問。
離線存儲所保存的不是應用中的某些數據,而是站點的某個些文件的副本,即html頁面或圖片等,而不是僅僅存儲一段json或xml。
㈣ html5新增了離線緩存機制這說法對嗎
這個不算是 新增吧。
隨著現代瀏覽器的推動,Flash放棄對移動端的支持,HTML5無疑成為當前Web前端炙手可熱的話題。各大游戲開發商、App開發商紛紛投入人力進行研究和技術儲備。相信不久的將來,HTML5會迎來一個快速發展和普及的春天。那麼,HTML5這個新一代的標准,又給我們帶來哪些緩存機制呢?
HTML5 之離線應用Manifest
我們知道,使用傳統的技術,就算是對站點的資源都實施了比較好的緩存策略,但是在斷網的情況下,是無法訪問的,因為入口的HTML頁面我們一般運維的考慮,不會對其進行緩存。HTML5的Cache Mainifest離線應用特性就能夠幫助我們構建離線也能使用的站點,所有的資源都使用瀏覽器本地緩存,當然前提是要求在聯網的情形下使用過一次站點。
如何實現離線訪問特性
實現的步驟非常簡單,主要3個步驟:
1)在伺服器上添加MIME TYPE支,讓伺服器能夠識別manifest後綴的文件
AddType text/cache-manifest manifest
2)創建一個後綴名為.manifest的文件,把需要緩存的文件按格式寫在裡面,並用注釋行標注版本
CACHE MANIFEST
# 直接緩存的文件
CACHE:
Path/to/cache.js
# version:2012-03-20
3)給 <html> 標簽加 manifest 屬性,並引用manifest文件
具體可以參考:HTML5 緩存: cache manifest
<html manifest=」path/to/name-of.manifest」>
離線應用訪問及更新流程
第一次訪問離線應用的入口頁HTML(引用了manifest文件),正常發送請求,獲取manifest文件並在本地緩存,陸續拉取manifest中的需要緩存的文件
再次訪問時,無法在線離線與否,都會直接從緩存中獲取入口頁HTML和其他緩存的文件進行展示。如果此時在線,瀏覽器會發送請求到伺服器請求manifest文件,並與第一次訪問的副本進行比對,如果發現版本不一致,會陸續發送請求重新拉取入口文件HTML和需要緩存的文件並更新本地緩存副本
之後的訪問重復第2步的行為
離線機制的緩存用途
從Manifest的機制來看,即使我們不是為了創建離線應用,也同樣可以使用這種機制用於緩存文件,可以說是給Web緩存提供多一種可以選擇的途徑。
存在的問題:緩存文件更新控制不靈活
就目前HTML5提供的manifest機制來講,一個頁面只能引用一個manifest頁面,而且一旦發現這個manifest改變了,就會把裡面所有定義的緩存文件全部重新拉取一遍,不管實際上有沒有更新,控制比較不靈活。針對這個問題,也有的同學提出了一些建議,比如把需要緩存的文件分模塊切分到不同manifest中,並分開用HTML引用,再使用強大的iframe嵌入到入口頁面,這樣就當某一個模式需要有更新,不會導致其他模塊的文件也重新拉取一遍。
HTML5 之本地存儲localstorage
HTML5給我們提供本地存儲localstorage特性,嚴格來講,其實已經不算傳統Web緩存的范疇。因為它存儲的地方是跟Web緩存分開的,是瀏覽器重新開辟的一個地方。
localstorage的作用
本地存儲localstorage的作用主要使Web頁面能夠通過瀏覽器提供的set/get介面,存儲一些自定義的信息到本地硬碟,並且在單次訪問或以後的訪問過程中隨時獲取或修改。
Localstorage的使用
Localstorage提供了幾個非常易用的Api,setItem/getItem/removeItem/clear,具體的可以參考:Html5 Step by Step(二) 本地存儲
Localstorage的緩存用途
Localstorage設計的本意可能是用來存儲一些用戶操作的個性化設置的文本類型的信息和數據,當我們其實也可能拿來當Web緩存區使用,比如我們可以將Base64格式編碼的圖片信息,存在localstorage中,再次訪問時,直接本地獲取後,使用Css3的Data:image的方式直接展現出來。
存在的問題:大小限制
按照目前標准,目前瀏覽器只給每個獨立的域名提供5m的存儲空間,當存儲超過5m,瀏覽器就會彈出警告框。
可以說,HTML5的Manifest和localstorage是給我們在考慮Web緩存的時候提供了多一種思路,當你開發的應用只面對現代瀏覽器的時候,不妨可以考慮一下
㈤ HTML5 離線存儲,有何不同
HTML5 提供了兩種在客戶端存儲數據的新方法:
localStorage - 沒有時間限制的數據存儲 (關閉瀏覽器依然存在)
sessionStorage - 針對一個 session 的數據存儲 (關閉瀏覽器後即清空)
之前,這些都是由 cookie 完成的。但是 cookie 不適合大量數據的存儲,因為它們由每個對伺服器的請求來傳遞,這使得 cookie 速度很慢而且效率也不高。
在 HTML5 中,數據不是由每個伺服器請求傳遞的,而是只有在請求時使用數據。它使在不影響網站性能的情況下存儲大量數據成為可能。
對於不同的網站,數據存儲於不同的區域,並且一個網站只能訪問其自身的數據。
HTML5 使用 JavaScript 來存儲和訪問數據。
㈥ HTML5的離線儲存怎麼使用,以及工作原理
原理:HTML5的離線存儲是基於一個新建的.appcache文件的,通過這個文件上的解析清單離線存儲資源,這些資源就會像cookie一樣被存儲了下來。之後當網路在處於離線狀態下時,瀏覽器會通過被離線存儲的數據進行頁面展示。
方法:
1.在index.html里加上<html manifest="test.manifest">
2.manifest清單格式如下:
CACHE MANIFEST
#上面一句必須
#v1.0.0
#需要緩存的文件
CACHE:
a.js
b.css
#不需要緩存的文件
NETWORK:
*
#無法訪問頁面
FALLBACK:
404.html
3.manifest文件的mime-type必須是 text/cache-manifest類型。
㈦ HTML5存儲類型有什麼區別
1.本地存儲localstorage
存儲方式:
以鍵值對(Key-Value)的方式存儲,永久存儲,永不失效,除非手動刪除。
2.本地存儲sessionstorage
HTML5 的本地存儲 API 中的 localStorage 與 sessionStorage 在使用方法上是相同的,區別在於 sessionStorage 在關閉頁面後即被清空,而 localStorage 則會一直保存。
3.離線緩存(application cache)
本地緩存應用所需的文件
使用方法:
①配置manifest文件
4.Web SQL
關系資料庫,通過SQL語句訪問
Web SQL 資料庫 API 並不是 HTML5 規范的一部分,但是它是一個獨立的規范,引入了一組使用 SQL 操作客戶端資料庫的 APIs。
5.IndexedDB
索引資料庫 (IndexedDB) API(作為 HTML5 的一部分)對創建具有豐富本地存儲數據的數據密集型的離線 HTML5 Web 應用程序很有用。同時它還有助於本地緩存數據,使傳統在線 Web 應用程序(比如移動 Web 應用程序)能夠更快地運行和響應。
㈧ HTML5離線存儲有優勢嗎
我給你舉例說下離線存儲的作用。比如用HTML5做一個手機應用,用戶使用的時候如果網路狀況不佳,連接不上伺服器,在沒使用離線存儲的情況下,應用是否就開天窗了?這樣對於用戶體驗來講肯定不舒服,我們至少得告訴用戶連接失敗的信息。
但是既然都沒連接上,又如何把沒連接上的信息告訴用戶?
這個時候我們就用離線存儲技術,將上次成功訪問的數據保存下來,並且裡麵包含了下次調用這些存儲數據時自動判斷是否連接成功,如果不成功則顯示失敗的消息。
既然現在已經能顯示失敗的信息了,那為什麼不幹脆再多點有用的信息,這樣就能讓應用在離線狀態下也能展現豐富的內容。
那既然都到這步了,我們為啥不可以把用戶在離線狀態下的某些操作(肯定是失敗的)過程記錄下來,等下次連接成功後實現操作的目的。
例如QQ空間,微博,微信,糗事網路,還有網路知道的客戶端都是利用這樣的離線存儲,當然不一定是html5的,不過原理一樣。離線狀態下,你也能看到內容,只是不能更新內容,不過能將你更新內容的操作記錄下來,待下次連接上了就能馬上更新。
手機純手打,給過吧?
㈨ html5 離線緩存怎麼實現的
HTML5離線存儲和本地緩存
一.離線存儲
有一個web應用有三個文件index.html,a.js,b.css,現在需要把js和css文件緩存起來
1.在index.html里加上<htmlmanifest="test.manifest">
2.manifest清單格式如下
CACHEMANIFEST
#上面一句必須
#v1.0.0
#需要緩存的文件
CACHE:
a.js
b.css
#不需要緩存的文件
NETWORK:
*
#無法訪問頁面
FALLBACK:
404.html
3.manifest文件的mime-type必須是text/cache-manifest類型
注意點:
1.對於每個index.html?id=1或index.html?id=2都會分別緩存index.html頁面,可以通過chrome瀏覽器Resources/ApplicationCache觀察
2.如果想更新緩存內容,只要修改下manifest文件即可,如改版本號v1.0.1
4.離線存儲如果資源有更新,可以通過如下代碼來監聽,但第一次載入還會是原來的版本
window.applicationCache.addEventListener('updateready',function(e){
if(window.applicationCache.status==window.applicationCache.UPDATEREADY){
window.applicationCache.swapCache();
if(confirm("lodingnew?")){
window.location.reload()
}
}
},false)
二.本地緩存
localStorage.setItem("key","value")
localStorage.getItem("key","value")
localStorage.removeItem("key")
localStorage.clear()
1.本地存儲永不過期,除非自己去清除
2.可以通過chrome瀏覽器Resources/LocalStorage來查看
3.不同域下就算key相同取不到的值也不同,如localhost和127.0.0.1