客戶端存儲

1.web存儲
web存儲有兩個我們經(jīng)常使用的對象,localStorage和sessionStorage,這兩個對象實際上是持久化關(guān)聯(lián)數(shù)組
web存儲特點:容易使用、堅持大容量瀏覽器(并非不限量),數(shù)據(jù)存儲同時兼容當前所有主流瀏覽器,但是不兼容早期瀏覽器
localStorage和sessionStorage在使用方便沒什么太大區(qū)別,區(qū)別在于有效期和作用域
localStorage使用:

localStorage.setItem('name', 'wxn');
localStorage.setItem('age', '18');
for (let i = 0; i < localStorage.length; i++) {
let everyKey = localStorage.key(i);
let value = localStorage.getItem(everyKey);
console.log('everyKey:' + everyKey);
console.log('value:' + value);
}
localStorage.removeItem('name'); //刪除 name
localStorage.clear(); //刪除全部

注意當前只支持存儲字符串類型,所以我們存值和取值時需要手動編碼和解碼

let data = {
"id": "6384944",
"class": "list-item",
"data-title": "百年孤獨",
};
localStorage.setItem('book', JSON.stringify(data));
let book = JSON.parse(localStorage.book);
console.log(book);

上面代碼中的使用方法對sessionStorage同樣適用,
localStorage 存儲的數(shù)據(jù)是永久性的,除非web應(yīng)用可以刪除存儲的數(shù)據(jù),或者用戶通過設(shè)置
瀏覽器配置來刪除,否則數(shù)據(jù)將一直保留在用戶的電腦上,永不過期。同源的文檔間可以共享localStorage的數(shù)據(jù),甚至可讀可寫,非同源的文檔不共享數(shù)據(jù)。
sessionStorage 的作用域也是限定在同源文檔中,并且,sessionStorage的作用域還被限定在窗口中。如果同源的文檔渲染在不同的瀏覽器標簽頁中,也是不可共享的,它們分別是兩個sessionStorage
localStorage和存儲時間都是采用廣播機制,瀏覽器會對目前正在訪問的同樣站點的所有窗口發(fā)送消息

2.cookie存儲
一種早期的客戶端存儲機制,適合存儲少量的文本的數(shù)據(jù)。
cookie存儲特點:不論服務(wù)器端是否需要,每一次http請求都會把這些數(shù)據(jù)傳輸?shù)椒?wù)器端。所有新舊瀏覽器都支持它
cookie的有效期很短暫,只能持續(xù)在web瀏覽器的會話期間,一旦用戶關(guān)閉瀏覽器,cookie保存的數(shù)據(jù)就丟失了。
cookie的作用域默認由文檔源限制,可以通過設(shè)置cookie的domain設(shè)置子域的相互共享
使用:

document.cookie = 'verison='+encodeURIComponent(document.lastModified);

要改變cookie的值需要使用相同的名字、路徑和域,但是新的值重新設(shè)置cookie的值,同樣的,設(shè)置新的max-age屬性就可以改變原來的cookie的有效期。
要刪除一個cookie,需要使用相同的名字、路徑和域,然后指定一個任意非空的值,并且將max-age屬性指定為0,再次設(shè)置cookie
3.IE User Data
IE專屬瀏覽器存儲機制,使用不多,不做介紹
4.離線web應(yīng)用
HTML5 標準中定義了一組“離線web應(yīng)用”API,用以緩存Web頁面以及相關(guān)資源(腳本,css文件,圖像等)。實現(xiàn)的是web應(yīng)用整體存儲在客戶端,而不僅僅是存儲數(shù)據(jù),哪怕在網(wǎng)絡(luò)不可用的時候web應(yīng)用依然是可用的。
關(guān)于離線web應(yīng)用現(xiàn)在很多都在應(yīng)用,需要考慮到幾個問題
應(yīng)用程序緩存清單:首先創(chuàng)建一個清單包含所有應(yīng)用程序的所有URL列表,在主頁面HTML中配置mainfest屬性,指向到該清單文件,該文件必須以CACHE MANIFEST字符串開始,其余就是要緩存的文件URL列表
緩存的更新:可以通過applicationCache.status屬性查看當前緩存狀態(tài)
applicationCache.UNCACHED(0)
應(yīng)用程序沒有設(shè)置manifest屬性
applicationCache.IDLE(1)
清單文件已經(jīng)檢查完畢,并且已經(jīng)緩存了最新的應(yīng)用程序
applicationCache.CHECKING(2)
瀏覽器正在檢查清單文件
applicationCache.DOWNLOADING(3)
瀏覽器正在下載并緩存清單中列舉的所有文件
applicationCache.UPDATEREADY(4)
已經(jīng)下載和緩存了最新版的應(yīng)用程序
applicationCache.OBSOLETE(5)
清單文件不存在,緩存將被清除

5.web數(shù)據(jù)庫
很多主流瀏覽器都開始在繼承客戶端數(shù)據(jù)庫的功能,但是都因API標準化工作而失敗

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容