這篇文章主要為大家展示了“HTML5中Web緩存和運(yùn)用程序緩存的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“HTML5中Web緩存和運(yùn)用程序緩存的示例分析”這篇文章吧。
創(chuàng)新互聯(lián)建站專注于網(wǎng)站建設(shè)|網(wǎng)站維護(hù)公司|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋成都PE包裝袋等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身開發(fā)品質(zhì)網(wǎng)站。session:
由于HTTP是無狀態(tài)的,你是誰?你干了什么?抱歉服務(wù)器都是不知道的。
因此session(會(huì)話)出現(xiàn)了,它會(huì)在服務(wù)器上存儲(chǔ)用戶信息以便將來使用(比如用戶名稱,購(gòu)物車購(gòu)買商品等)。
但是session是臨時(shí)的,用戶離開網(wǎng)站將被刪除。如果要永久存儲(chǔ)信息,可以保存在數(shù)據(jù)庫中!
session工作原理:為每個(gè)用戶創(chuàng)建一個(gè)session id(核心?。。。?。而session id是存儲(chǔ)在cookie中的,也就是說如果瀏覽器禁用了cookie,那么session會(huì)失效?。ǖ强梢酝ㄟ^其它方式實(shí)現(xiàn),如:通過URL傳遞session id)
用戶驗(yàn)證一般采用session。
cookie:
目的:網(wǎng)站標(biāo)記用戶身份而存儲(chǔ)在本地客戶端的數(shù)據(jù)(通常經(jīng)過加密)。
用戶訪問網(wǎng)頁時(shí),名字記錄在cookie中;
下次繼續(xù)訪問該網(wǎng)頁時(shí),可以從cookie中讀取用戶訪問記錄。
cookie會(huì)在同源的http請(qǐng)求攜帶(即使不需要),即在客戶端和服務(wù)器之間來回傳遞!
cookie的數(shù)據(jù)大小不超過4k
cookie的有效期:設(shè)置的cookie有效時(shí)間之前一直有效,即使瀏覽器關(guān)閉!
localStorage & sessionStorage:
早期,本地緩存普遍使用的是cookie,但是web存儲(chǔ)需要更安全、更快速!
這些數(shù)據(jù)不會(huì)保存在服務(wù)器上(存儲(chǔ)在客戶端),不會(huì)影響服務(wù)器性能!
sessionStorage和localStorage數(shù)據(jù)存儲(chǔ)也有大小限制,但卻比cookie大得多,可以達(dá)到5M甚至更大!
localStorage:沒有時(shí)間限制的數(shù)據(jù)存儲(chǔ)!
sessionStorage:由英文意思也可知,它是對(duì)session的數(shù)據(jù)存儲(chǔ),所以在用戶關(guān)閉瀏覽器(標(biāo)簽頁/窗口)后,數(shù)據(jù)被刪除!
HTML5 web存儲(chǔ)支持情況:
IE8以上,現(xiàn)代瀏覽器。
數(shù)據(jù)以鍵值對(duì)存儲(chǔ):
localStorage和sessionStorage都有以下幾個(gè)方法:
localStorage.setItem(key,value):設(shè)置(保存)數(shù)據(jù);相當(dāng)于localStorage.key=value!
localStorage.getItem(key):獲取數(shù)據(jù)
localStorage.removeItem(key):刪除單個(gè)數(shù)據(jù)
localStorage.clear():刪除所有數(shù)據(jù)
localStorage.key(index):獲取某個(gè)索引的鍵值
web storage
程序運(yùn)行結(jié)果:
注意:鍵值對(duì)是以字符串保存的,根據(jù)需求應(yīng)改變類型(比如做加法,變?yōu)镹umber型)。
HTML5運(yùn)用程序緩存(Application Cache):
通過創(chuàng)建cache manifest文件,web運(yùn)用可被緩存,并且無網(wǎng)絡(luò)狀態(tài)可以進(jìn)行訪問!
Application Cache優(yōu)勢(shì):
1.離線瀏覽;
2.速度更快:已緩存資源加載更快;
3.減少瀏覽器負(fù)載:客戶端將只從服務(wù)器下載或更新更改過的資源
支持情況:
IE10以上,現(xiàn)代瀏覽器。
使用:
注意:要開啟application cache,需指定manifest屬性(擴(kuò)展名:.appcache);如果未指定manifest屬性,頁面不會(huì)緩存(除非在manifest文件中直接指定了該頁面?。?/p>
manifest文件在服務(wù)器上需正確的配置MIME-type:text/cache-manifest。
Manifest文件:
manifest是簡(jiǎn)單的文本文件,它告知瀏覽器被緩存的內(nèi)容以及不被緩存的內(nèi)容!
manifest可分為三部分:
CACHE MANIFEST:此項(xiàng)列出的文件將在首次下載后進(jìn)行緩存!
NETWORK:此項(xiàng)列出的文件需要與服務(wù)器進(jìn)行網(wǎng)絡(luò)連接,不會(huì)被緩存!
FALLBACK:此項(xiàng)列出當(dāng)頁面無法訪問時(shí)的回退頁面(如:404頁面)!
test.appcache:
CACHE MANIFEST #2017 11 21 v10.0.1 /test.css /logo.gif /main.js NETWORK /login.php /register.php FALLBACK #/html/目錄中文件無法訪問時(shí),用/offline.html替代 /html/ /offline.html
更新application cache的情況:
1.用戶清空瀏覽器緩存!
2.manifest文件被更改(#:表示注釋,同時(shí)如果更改為#2018 1 1 v20.0.0,則瀏覽器會(huì)重新緩存!)
3.程序進(jìn)行更新application cache!
Web Workers:
web workers是運(yùn)行在后臺(tái)的javascript,獨(dú)立于其它腳本,不會(huì)影響頁面性能!
而一般的HTML頁面上執(zhí)行腳本時(shí),除非腳本加載完成,否則頁面不會(huì)響應(yīng)!
支持情況:IE10以上,現(xiàn)代瀏覽器
示例:html文件:
web worker 計(jì)數(shù):
testWorker.js文件:
var i=0; function timedCount() { i+=1; // 重要的部分,向html頁面?zhèn)骰匾欢涡畔? postMessage(i); setTimeout('timedCount()',500); } timedCount();
注意1:通常web worker不是用于如此簡(jiǎn)單的任務(wù),而是用在更耗CPU資源的任務(wù)!
注意2:在chrome中運(yùn)行會(huì)產(chǎn)生“cannot be accessed from origin 'null'”的錯(cuò)誤,我的解決方法是:xampp中開啟apache,用http://localhost/進(jìn)行訪問。
web worker缺點(diǎn):
由于web worker位于外部文件中,所以它無法訪問下列javascript對(duì)象:
window對(duì)象;
document對(duì)象;
parent對(duì)象。
HTML5 server-sent events(服務(wù)器發(fā)送事件):
server-sent事件是單向信息傳遞;網(wǎng)頁可以自動(dòng)獲取來自服務(wù)器的更新!
以前:網(wǎng)頁先詢問是否有可用的更新,服務(wù)器發(fā)送數(shù)據(jù),進(jìn)行更新(雙向數(shù)據(jù)傳遞)!
支持情況:除IE以外的現(xiàn)代瀏覽器均支持!
示例代碼:html文件:
sever sent event sever sent event informations
test.php:
注意:后面沒有內(nèi)容,php文件可以不用"?>"關(guān)閉!
HTML5 WebSocket:
WebSocket是HTML5提供的一種在單個(gè)TCP連接上建立全雙工(類似電話)通訊的協(xié)議;
瀏覽器和服務(wù)器之間只需要進(jìn)行一次握手的操作,瀏覽器和服務(wù)器之間就形成了一條快速通道,兩者之間就可直接進(jìn)行數(shù)據(jù)傳送;
瀏覽器通過javascript建立WebSocket連接請(qǐng)求,通過send()向服務(wù)器發(fā)送數(shù)據(jù),onmessage()接收服務(wù)器返回的數(shù)據(jù)。
WebSocket如何兼容低瀏覽器:
Adobe Flash Socket;
ActiveX HTMLFile(IE);
基于multipart編碼發(fā)送XHR;
基于長(zhǎng)輪詢的XHR
WebSocket可以用在多個(gè)標(biāo)簽頁之間的通信!
以上是“HTML5中Web緩存和運(yùn)用程序緩存的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文標(biāo)題:HTML5中Web緩存和運(yùn)用程序緩存的示例分析-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/eephe.html