1.支持離線Web應(yīng)用是HTML5開(kāi)發(fā)的另一個(gè)重點(diǎn)。所謂離線Web應(yīng)用,就是在設(shè)備不能上網(wǎng)的情況下仍然可以運(yùn)行的應(yīng)用。
2.開(kāi)發(fā)離線Web應(yīng)用需要幾個(gè)步驟,首先是確保應(yīng)用知道設(shè)備是否能上網(wǎng),以便下一步執(zhí)行正確的操作。然后,應(yīng)用還必須能訪問(wèn)一定的資源(圖像、JavaScript、CSS等),只有這樣才能正常工作。最后,必須有一塊本地空間能用于保存數(shù)據(jù),無(wú)論是否能上網(wǎng)都不妨礙讀寫。
## 離線檢測(cè)
* * * * *
3.HTML5定義了一個(gè)navigator.onLine屬性,用于獲取設(shè)備是在線還是離線。此外HTML5還定義了online和offline事件,當(dāng)網(wǎng)絡(luò)在離線和在線狀態(tài)切換時(shí)觸發(fā)。
## 應(yīng)用緩存
* * * * *
4.HTML5的應(yīng)用緩存(application cache或簡(jiǎn)稱為appcache)是專門為開(kāi)發(fā)離線web應(yīng)用而設(shè)計(jì)的。appcache就是從瀏覽器的緩存中分出來(lái)的一塊緩存區(qū)。要想在這個(gè)緩存中保存數(shù)據(jù),可以使用一個(gè)描述文件(manifest file),列出要下載和緩存的資源,然后在<html>標(biāo)簽中的mani屬性中指定這個(gè)文件路徑,就可以將描述文件和頁(yè)面關(guān)聯(lián)起來(lái)。
## 數(shù)據(jù)存儲(chǔ)
* * * * *
5.隨著Web應(yīng)用的出現(xiàn),也產(chǎn)生了對(duì)于能夠直接在客戶端上存儲(chǔ)用戶信息(包括登錄信息、偏好設(shè)定等等)能力的要求。
#### cookie
* * * * *
6.HTTP Cookie,通常直接叫做cookie,最初是用在客戶端用于存儲(chǔ)會(huì)話信息的。該標(biāo)準(zhǔn)要求服務(wù)器對(duì)任意HTTP請(qǐng)求發(fā)送Set-Cookie HTTP頭作為響應(yīng)的一部分,其中包含會(huì)話信息,瀏覽器會(huì)存儲(chǔ)這樣的會(huì)話信息,并在這之后,通過(guò)為每個(gè)請(qǐng)求添加Cookie HTTP頭將信息發(fā)送回服務(wù)器。
7.**cookie在性質(zhì)上是綁定在特定的域名下的。當(dāng)設(shè)定了一個(gè)cookie后,再給創(chuàng)建它的域名發(fā)送請(qǐng)求時(shí),都會(huì)包含這個(gè)cookie。這個(gè)限制確保了儲(chǔ)存在cookie中的信息只能讓批準(zhǔn)的接受者(服務(wù)器)訪問(wèn),而無(wú)法被其他域訪問(wèn)。**
8.瀏覽器還對(duì)單個(gè)域名下,cookie的數(shù)量(通常是50或無(wú)限制)和cookie的尺寸(4096B加減1,這個(gè)尺寸是單個(gè)域名下所有cookie加起來(lái)占據(jù)的空間不得大于此)作出了限制。違反前者瀏覽器會(huì)清除以前設(shè)置的單個(gè)cookie,違反后者則該域名下的所有cookie會(huì)被瀏覽器直接丟棄。
9.cookie由瀏覽器保存的以下幾塊信息構(gòu)成:
(1)名稱-值:必須被URL編碼。實(shí)際發(fā)送回服務(wù)器的只有這個(gè)名值對(duì)。
(2)域:cookie對(duì)哪個(gè)域是有效的。所有向該域發(fā)送的請(qǐng)求中都會(huì)包含這個(gè)cookie信息。這個(gè)值可以包含子域,也可以不包含它(如.wrox.com則對(duì)wrox.com的所有子域都有效)。如果沒(méi)有顯式設(shè)定這個(gè)值,那么這個(gè)值會(huì)被認(rèn)作來(lái)自設(shè)置cookie的那個(gè)域。
(3)路徑:對(duì)于指定域中的那個(gè)路徑,應(yīng)該向服務(wù)器發(fā)送cookie。例如可以指定cookie只有從http://www.wrox.com/books/ 中才能訪問(wèn),那么http://www.wrox.com 的頁(yè)面就不會(huì)被發(fā)送cookie信息。
(4)失效時(shí)間:表示cookie何時(shí)應(yīng)該被刪除的時(shí)間戳。默認(rèn)情況下,瀏覽器會(huì)話結(jié)束(關(guān)閉當(dāng)前頁(yè)面標(biāo)簽)時(shí)即將所有cookie刪除;不過(guò)也可以自己以GMT格式的日期設(shè)置刪除時(shí)間。
(5)安全標(biāo)識(shí):指定后,cookie只有在使用SSL連接的時(shí)候才會(huì)發(fā)送到服務(wù)器。
10.cookie實(shí)例:
~~~
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: name=value; expires=Mon, 22-Jan-07 07:10:24 GMT; domain=.wrox.com; path=/; secure
~~~
11.JavaScript中的cookie操作通過(guò)BOM的document.cookie接口。當(dāng)用來(lái)獲取屬性值時(shí),document.cookie返回當(dāng)前頁(yè)面可用的所有cookie字符串,一系列由分號(hào)隔開(kāi)的名值對(duì)兒:
`name1=value; name2=value; name3=value`
當(dāng)用于設(shè)置值時(shí),document.cookie屬性可以設(shè)置為一個(gè)新的cookie字符串。這個(gè)cookie字符串會(huì)被解釋并添加到現(xiàn)有的cookie集合中,除非設(shè)置的cookie的名稱已經(jīng)存在,否則不會(huì)覆蓋cookie。設(shè)置cookie的格式如下,和Set-Cookie頭中使用的格式一樣(名值對(duì)要先編碼):
`document.cookie = 'name=ken; domain=.wrox.com'`
12.子cookie技術(shù)是指通過(guò)在單個(gè)cookie中存儲(chǔ)多個(gè)名值對(duì)來(lái)繞開(kāi)瀏覽器對(duì)單個(gè)域名下的cookie數(shù)限制。
`name=name1=value1&name2=value2&name3=value3`
13.由于所有的cookie都會(huì)由瀏覽器作為請(qǐng)求頭發(fā)送,所以在cookie中存儲(chǔ)大量信息影響特定域的請(qǐng)求性能。因此最好還是盡可能減少cookie中存儲(chǔ)的信息,以避免影響性能。此外,不要在cookie中存儲(chǔ)重要和敏感的數(shù)據(jù),因?yàn)閏ookie并非存儲(chǔ)在一個(gè)安全環(huán)境中,其中包含的任何數(shù)據(jù)都可以被其他人訪問(wèn)。
#### Web存儲(chǔ)機(jī)制
* * * * *
14.Web Storage的目的是克服由cookie帶來(lái)的一些限制,當(dāng)數(shù)據(jù)需要被嚴(yán)格控制在客戶端上,無(wú)需持續(xù)地將數(shù)據(jù)發(fā)回服務(wù)器。
15.Storage類型提供最大的存儲(chǔ)空間(因?yàn)g覽器而異)來(lái)存儲(chǔ)名值對(duì),只能存儲(chǔ)字符串。Storage的實(shí)例方法如下:
(1)clear():刪除所有值
(2)getItem(name):根據(jù)指定的名稱name獲取對(duì)應(yīng)的值
(3)removeItem(name):刪除由name指定的名值對(duì)
(4)setItem(name):為指定的name設(shè)置一個(gè)對(duì)應(yīng)的值
(5)key(index):獲得index處的值
16.cookie、sessionStorage、LocalStorage的區(qū)別見(jiàn)https://segmentfault.com/a/1190000002723469
17.indexedDB在iOS和早期android中支持不善,不作深入學(xué)習(xí)。
- 第一章 JavaScript簡(jiǎn)介
- 第二章 在HTML中使用JavaScript
- 第三章 基本概念
- 第四章 變量、作用域和內(nèi)存問(wèn)題
- 第五章 引用類型
- 第六章 面向?qū)ο蟮某绦蛟O(shè)計(jì)
- 第七章 函數(shù)表達(dá)式
- 第八章 BOM
- 第九章 客戶端檢測(cè)
- 第十章 DOM
- 第十一章 DOM擴(kuò)展
- 第十二章 DOM2和DOM3
- 第十三章 事件
- 第十四章 表單腳本
- 第十六章 HTML5腳本程序
- 第十七章 錯(cuò)誤處理與調(diào)試
- 第二十章 JSON
- 第二十一章 AJAX和Comet
- 第二十二章 高級(jí)技巧
- 第二十三章 離線應(yīng)用與客戶端存儲(chǔ)
- 第二十四章 最佳實(shí)踐
- 第二十五章 新興的API
