自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JavaScript中的緩存API

開發(fā) 前端
了解如何使用JavaScript中的Cache API緩存資源。Cache API允許服務工作者對要緩存的資源(HTML頁面、CSS、JavaScript文件、圖片、JSON等)進行控制。

 了解如何使用JavaScript中的Cache API緩存資源。

[[335466]]

Cache API允許服務工作者對要緩存的資源(HTML頁面、CSS、JavaScript文件、圖片、JSON等)進行控制。通過Cache API,服務工作者可以緩存資源以供脫機使用,并在以后檢索它們。

檢測Cache支持

檢查 caches 對象在 window 中是否可用。

 

  1. let isCacheSupported = 'caches' in window; 

caches 是 CacheStorage 的一個實例。

創(chuàng)建/初始化Cache

我們可以使用 open 方法創(chuàng)建一個具有 name 的緩存,這將返回 promise。如果緩存已經(jīng)存在,則不會創(chuàng)建新的緩存。

 

  1. caches.open('cacheName').then( cache => { 
  2. }); 
  • 你不能訪問為其他源(域)設(shè)置的緩存。
  • 你正在創(chuàng)建的緩存將為你的域創(chuàng)建。
  • 你可以為同一個域添加多個緩存,可以通過 caches.keys() 訪問。

將項目添加到緩存

可以使用三種方法 add,addAll,set 來緩存資源。add() 和 addAll() 方法自動獲取資源并對其進行緩存,而在 set 方法中,我們將獲取數(shù)據(jù)并設(shè)置緩存。

add

 

  1. let cacheName = 'userSettings'
  2. let url = '/api/get/usersettings'
  3. caches.open(cacheName).then( cache => { 
  4.    cache.add(url).then( () => { 
  5.        console.log("Data cached "
  6.     }); 
  7. }); 

在上面的代碼中,內(nèi)部對 /api/get/usersettings url的請求已發(fā)送到服務器,一旦接收到數(shù)據(jù),響應將被緩存。

addAll

addAll 接受URL數(shù)組,并在緩存所有資源時返回Promise。

 

  1. let urls = ['/get/userSettings?userId=1''/get/userDetails']; 
  2. caches.open(cacheName).then( cache => { 
  3. cache.addAll(urls).then( () => { 
  4.        console.log("Data cached "
  5.     }); 
  6. }); 

Cache.add/Cache.addAll 不緩存 Response.status 值不在200范圍內(nèi)的響應,Cache.put 可以讓你存儲任何請求/響應對。

put

put 為當前的 Cache 對象添加一個key/value對,在 put 中,我們需要手動獲取請求并設(shè)置值。

注意:put() 將覆蓋先前存儲在高速緩存中與請求匹配的任何鍵/值對。

 

  1. let cacheName = 'userSettings'
  2. let url = '/api/get/userSettings'
  3. fetch(url).then(res => { 
  4.   return caches.open(cacheName).then(cache => { 
  5.     return cache.put(url, res); 
  6.   }) 
  7. }) 

從緩存中檢索

使用 cache.match() 可以得到存儲到URL的 Response。

 

  1. const cacheName = 'userSettings' 
  2. const url = '/api/get/userSettings' 
  3. caches.open(cacheName).then(cache => { 
  4.   cache.match(url).then(settings => { 
  5.     console.log(settings); 
  6.   } 
  7. }); 

settings 是一個響應對象,它看起來像

 

  1. Response { 
  2.   body: (...), 
  3.   bodyUsed: false
  4.   headers: Headers, 
  5.   ok: true
  6.   status: 200, 
  7.   statusText: "OK"
  8.   type: "basic"
  9.   url: "https://test.com/api/get/userSettings" 

檢索緩存中的所有項目

cache 對象包含 keys 方法,這些方法將擁有當前緩存對象的所有url。

 

  1. caches.open(cacheName).then( (cache) => { 
  2.   cache.keys().then((arrayOfRequest) => { 
  3.       console.log(arrayOfRequest); // [Request,  Request] 
  4.   }); 
  5. }); 

arrayOfRequest是一個Request對象數(shù)組,其中包含有關(guān)請求的所有詳細信息。

檢索所有緩存

 

  1. caches.keys().then(keys => { 
  2.   // keys是一個數(shù)組,其中包含鍵的列表 
  3. }) 

從緩存中刪除項目

可以對 cache 對象使用 delete 方法來刪除特定的緩存請求。

 

  1. let cacheName = userSettings; 
  2. let urlToDelete = '/api/get/userSettings'
  3. caches.open(cacheName).then(cache => { 
  4.   cache.delete(urlToDelete) 
  5. }) 

完全刪除緩存

 

  1. caches.delete(cacheName).then(() => { 
  2.    console.log('Cache successfully deleted!'); 
  3. }) 

 

 

責任編輯:華軒 來源: 前端全棧開發(fā)者
相關(guān)推薦

2020-06-18 09:16:20

JavaScript緩存API

2017-06-19 14:21:01

JavaScriptAPI設(shè)計原則

2020-11-09 11:10:56

前端api緩存

2010-09-08 17:26:46

JavaScript

2016-03-29 09:59:11

JavaScriptAPI設(shè)計

2023-04-17 16:21:20

JavaScriot前端開發(fā)

2010-09-28 15:27:09

JavaScript

2019-07-02 15:21:39

緩存NET單線程

2020-12-02 08:28:58

JavaScript API 服務器

2021-03-29 11:51:07

緩存儲存數(shù)據(jù)

2015-10-30 15:18:24

2011-06-22 09:45:46

JavaScriptAPI

2014-01-03 09:13:39

JavaScriptthis

2013-05-08 10:36:07

JavaScriptJS詳解JavaScrip

2025-03-31 08:00:00

JavaScriptAPI開發(fā)

2020-07-01 08:37:31

JavaScript開發(fā)技術(shù)

2009-06-22 15:34:00

Javascript

2023-10-11 13:46:26

緩存Web應用程序

2021-10-21 18:47:37

JavaScript面向對象

2017-03-20 14:45:42

JavaScript詳解
點贊
收藏

51CTO技術(shù)棧公眾號