首頁 > web前端 > js教程 > 主體

JavaScript中的cacheStorage使用詳解_基礎知識

WBOY
發布: 2016-05-16 15:48:12
原創
2930 人瀏覽過

localStorage 應是家喻戶曉的?但本地儲存這個家族可遠不止它。以前扯過 sessionStorage,現在還有個神奇的 CacheStorage。它用來儲存 Response 物件的。也就是說用來對 HTTP ,回應做快取的。雖然 localStorage 也能做,但它可能更專業。
  CacheStorage 在瀏覽器上的引用名叫 caches 而不是駝峰寫法的 cacheStorage,它定義在 ServiceWorker 的規格中。 CacheStorage 是多個 Cache 的集合,而每個 Cache 可以儲存多個 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 上呼叫 open 方法就可以非同步地得到一個 Cache 物件的參考。在這個物件上我們可以把 Response 物件 put 進去(參數是一個 URL 和一個 Response 物件)、用 match 方法取出(傳入一個 URL 取出對應的 Response 物件)。
  match 方法不僅可以在 Cache 上呼叫 CacheStorage 上也有 match 方法,例如上面範例就開啟了兩個 Cache,都寫入一個叫 /hehe 的 URL。在寫入操作完成之後,到外部的 CacheStorage 上呼叫 match 方法來匹配 /hehe,結果是隨機的(沒找到這個規則在哪裡定義的)。
  雖然上面的範例中只對 Cache 物件 put 了一個數據,而 Cache 物件本身可以存放更多的 URL/Response 對。並且提供了 delete(用戶刪除)、keys(用於遍歷)等方法。但 Cache 不像 localStorage 一樣有 clear 方法,如果非要清空一個 Cache,可以直接在 CacheStorage 上把整個 Cache 給 delete 掉再重新 open。
  這套 API 和 ServiceWorker 一家的,它通常被用於 ServiceWorker 中,整個設計風格也和 ServiceWorker 一樣都基於 Promise。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板