存儲(chǔ)機(jī)制
1. cookies存儲(chǔ)機(jī)制
什么是cookie
當(dāng)客戶端向服務(wù)端發(fā)送請(qǐng)求后,服務(wù)端對(duì)客戶端發(fā)送過(guò)來(lái)的信息進(jìn)行處理時(shí),就會(huì)產(chǎn)生cookie,這是里面服務(wù)端就會(huì)有兩段信息,一部分是客戶端傳過(guò)來(lái)的信息,還有一段是服務(wù)器處理過(guò)的信息,cookie會(huì)將其中的一段保存起來(lái)。然后通過(guò)包頭返回客戶端保存在客戶端PC機(jī)器上。這就是cookie的生成。
優(yōu)點(diǎn):兼容性好
缺點(diǎn):一是增加了網(wǎng)絡(luò)流量,因?yàn)樗S任意http一同發(fā)送;二則是它的數(shù)據(jù)容量有限,最多只能存儲(chǔ)4KB的數(shù)據(jù),瀏覽器之間各有不同;三是不安全。
2. LocalStorage存儲(chǔ)機(jī)制
將數(shù)據(jù)保存在客戶端本地的硬件設(shè)備上,即使關(guān)閉了瀏覽器數(shù)據(jù)也不會(huì)丟失,可以說(shuō)是一種永久性的保存。
保存數(shù)據(jù)
localStorage.setItem("key","value")
//或
localStorage.key = value;
讀取數(shù)據(jù)
變量 = localStorage.getItem("key")
//或
變量 = localStorage.key
3. SessionStorage存儲(chǔ)機(jī)制
這種存儲(chǔ)機(jī)制僅僅是保存當(dāng)前會(huì)話頁(yè)面的數(shù)據(jù)內(nèi)容,當(dāng)用戶關(guān)閉了瀏覽器時(shí),保存的數(shù)據(jù)也會(huì)跟著消失,即是一種暫時(shí)性的存儲(chǔ)。
保存數(shù)據(jù)
sessionStorage.setItem("key","value")
//或
sessionStorage.key = value;
讀取數(shù)據(jù)
變量 =sessionStorage.getItem("key")
//或
變量 = sessionStorage.key
seccionStorage和localStorage都屬于web存儲(chǔ)機(jī)制,但是IE不支持 SessionStorage,低版本IE ( IE6, IE7 ) 不支持 LocalStorage,并且不支持查詢語(yǔ)言
本地?cái)?shù)據(jù)庫(kù)
在HTML5時(shí)代,數(shù)據(jù)不僅僅能存儲(chǔ)在服務(wù)器端,還能存儲(chǔ)在客戶端,著大大減輕的服務(wù)器的負(fù)擔(dān),也使得客戶端也能像訪問(wèn)本地文件一樣對(duì)內(nèi)置的數(shù)據(jù)庫(kù)進(jìn)行直接的訪問(wèn)。
SQLLite
使用openDatabase方法創(chuàng)建一個(gè)訪問(wèn)數(shù)據(jù)庫(kù)的對(duì)象,
var db = openDatabase('db','1.0','Text DB',2*1024*1024);
//這四個(gè)參數(shù)分別是數(shù)據(jù)庫(kù)名;版本號(hào);數(shù)據(jù)庫(kù)描述;數(shù)據(jù)庫(kù)大小
在實(shí)際訪問(wèn)數(shù)據(jù)庫(kù)時(shí)候,還需要調(diào)用transaction方法,用來(lái)執(zhí)行事務(wù)處理
indexedDB
IndexedDB是為了能夠在客戶端存儲(chǔ)大量的結(jié)構(gòu)化數(shù)據(jù),并且使用索引高效檢索的API
本地緩存
本地緩存與瀏覽器緩存的區(qū)別
1、本地緩存服務(wù)于整個(gè)web應(yīng)用
程序,二瀏覽器緩存只是服務(wù)于單個(gè)網(wǎng)頁(yè)
2、任何網(wǎng)頁(yè)都有網(wǎng)頁(yè)緩存,而瀏覽器緩存只緩存那些指定的頁(yè)面
3、瀏覽器緩存不安全、不可靠,因?yàn)椴磺宄彺媪四切﹥?nèi)容,而本地緩存是可靠的,因?yàn)榭梢灾付ň彺娴捻?yè)面和內(nèi)容,使得開(kāi)發(fā)人員可以控制。