JavaScript中的cacheStorage使用詳解
localStorage 應(yīng)是家喻戶曉的?但本地存儲(chǔ)這個(gè)家族可遠(yuǎn)不止它。以前扯過 sessionStorage,現(xiàn)在還有個(gè)神奇的 CacheStorage。它用來存儲(chǔ) Response 對象的。也就是說用來對 HTTP ,響應(yīng)做緩存的。雖然 localStorage 也能做,但是它可能更專業(yè)。
CacheStorage 在瀏覽器上的引用名叫 caches 而不是駝峰寫法的 cacheStorage,它定義在 ServiceWorker 的規(guī)范中。CacheStorage 是多個(gè) Cache 的集合,而每個(gè) Cache 可以存儲(chǔ)多個(gè) Response 對象。
廢話不能說再多,下面是 demo
<script>
caches.delete('c1');
caches.delete('c2');
Promise.all([
caches.open('c1').then(function(cache) {
return cache.put('/hehe', new Response('aaa', { status: 200 }));
}),
caches.open('c2').then(function(cache) {
return cache.put('/hehe', new Response('bbb', { status: 200 }));
})
]).then(function() {
return caches.match('/hehe');
}).then(function(response) {
return response.text();
}).then(function(body) {
console.log(body);
});
</script>
首先,在 caches 上調(diào)用 open 方法就可以異步地得到一個(gè) Cache 對象的引用。在這個(gè)對象上我們可以把 Response 對象 put 進(jìn)去(參數(shù)是一個(gè) URL 和一個(gè) Response 對象)、用 match 方法取出(傳入一個(gè) URL 取出對應(yīng)的 Response 對象)。
match 方法不僅可以在 Cache 上調(diào)用 CacheStorage 上也有 match 方法,比如上面例子就打開了兩個(gè) Cache,都寫入一個(gè)叫 /hehe 的 URL。在寫入操作完成之后,到外部的 CacheStorage 上調(diào)用 match 方法來匹配 /hehe,結(jié)果是隨機(jī)的(沒找到這個(gè)規(guī)則在哪里定義的)。
雖然上面的例子中只對 Cache 對象 put 了一個(gè)數(shù)據(jù),而 Cache 對象本身可以存放更多的 URL/Response 對。并且提供了 delete(用戶刪除)、keys(用于遍歷)等方法。但是 Cache 并不像 localStorage 一樣有 clear 方法,如果非要清空一個(gè) Cache,可以直接在 CacheStorage 上把整個(gè) Cache 給 delete 掉再重新 open。
這套 API 和 ServiceWorker 一家的,它通常被用于 ServiceWorker 中,整個(gè)設(shè)計(jì)風(fēng)格也和 ServiceWorker 一樣都基于 Promise。
相關(guān)文章
基于js 字符串indexof與search方法的區(qū)別(詳解)
下面小編就為大家分享一篇基于js 字符串indexof與search方法的區(qū)別介紹,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12
JavaScript展開操作符(Spread operator)詳解
在本篇文章里小編給大家整理的是關(guān)于JavaScript展開操作符(Spread operator)的詳細(xì)介紹以及用法,需要的讀者們參考下。2019-07-07
瀏覽器中url存儲(chǔ)的JavaScript實(shí)現(xiàn)
這篇文章主要介紹了瀏覽器中url存儲(chǔ)的JavaScript實(shí)現(xiàn),并且簡單講述了輸入url地址后提示過去輸入歷史記錄的原理,需要的朋友可以參考下2015-07-07
javascript運(yùn)行機(jī)制之this詳細(xì)介紹
這篇文章主要介紹了javascript運(yùn)行機(jī)制之this,需要的朋友可以參考下2014-02-02
javascript開發(fā)技術(shù)大全-第3章 js數(shù)據(jù)類型
字符串類型(string) :由unicode字符、數(shù)字、標(biāo)點(diǎn)符號(hào)組成,在javascript中沒有char字符類型 ,即使只表示一個(gè)字符,也必須用到字符串2011-07-07
js中escape對應(yīng)的C#解碼函數(shù) UrlDecode
js中escape對應(yīng)的C#解碼函數(shù) System.Web.HttpUtility.UrlDecode(s),使用過程中有以下幾點(diǎn)需要注意2012-12-12

