<strike id="cy2gs"><menu id="cy2gs"></menu></strike>
  • <del id="cy2gs"><dfn id="cy2gs"></dfn></del>
  • JavaScript中的緩存API

    2020-7-8    seo達人

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


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


    檢測Cache支持

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


    let isCacheSupported = 'caches' in window;

    caches 是 CacheStorage 的一個實例。


    創建/初始化Cache

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


    caches.open('cacheName').then( cache => {

    });

    你不能訪問為其他源(域)設置的緩存。

    你正在創建的緩存將為你的域創建。

    你可以為同一個域添加多個緩存,可以通過 caches.keys() 訪問。

    將項目添加到緩存

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


    add

    let cacheName = 'userSettings';

    let url = '/api/get/usersettings';

    caches.open(cacheName).then( cache => {

      cache.add(url).then( () => {

          console.log("Data cached ")

       });

    });

    在上面的代碼中,內部對 /api/get/usersettings url的請求已發送到服務器,一旦接收到數據,響應將被緩存。


    addAll

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


    let urls = ['/get/userSettings?userId=1', '/get/userDetails'];

    caches.open(cacheName).then( cache => {

    cache.addAll(urls).then( () => {

          console.log("Data cached ")

       });

    });

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


    put

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


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


    let cacheName = 'userSettings';

    let url = '/api/get/userSettings';

    fetch(url).then(res => {

     return caches.open(cacheName).then(cache => {

       return cache.put(url, res);

     })

    })

    從緩存中檢索

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


    const cacheName = 'userSettings'

    const url = '/api/get/userSettings'

    caches.open(cacheName).then(cache => {

     cache.match(url).then(settings => {

       console.log(settings);

     }

    });

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


    Response {

     body: (...),

     bodyUsed: false,

     headers: Headers,

     ok: true,

     status: 200,

     statusText: "OK",

     type: "basic",

     url: "https://test.com/api/get/userSettings"

    }

    檢索緩存中的所有項目

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


    caches.open(cacheName).then( (cache) => {

     cache.keys().then((arrayOfRequest) => {

         console.log(arrayOfRequest); // [Request,  Request]

     });

    });

    arrayOfRequest是一個Request對象數組,其中包含有關請求的所有詳細信息。


    檢索所有緩存

    caches.keys().then(keys => {

     // keys是一個數組,其中包含鍵的列表

    })

    從緩存中刪除項目

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


    let cacheName = userSettings;

    let urlToDelete = '/api/get/userSettings';

    caches.open(cacheName).then(cache => {

     cache.delete(urlToDelete)

    })

    完全刪除緩存

    caches.delete(cacheName).then(() => {

      console.log('Cache successfully deleted!');

    })

    藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

    日歷

    鏈接

    個人資料

    藍藍設計的小編 http://www.skdbbs.com

    存檔

    主站蜘蛛池模板: 四虎最新永久在线精品免费| Xx性欧美肥妇精品久久久久久 | 精品无码AV一区二区三区不卡| 99精品电影一区二区免费看| 国产精品美女久久久久 | 国产啪亚洲国产精品无码 | 国产人妖乱国产精品人妖| 日本欧美国产精品第一页久久| 北条麻妃国产九九九精品视频| 国产精品素人搭讪在线播放 | 午夜精品美女自拍福到在线| 国产精品久久午夜夜伦鲁鲁| 亚洲精品乱码久久久久久| 国产欧美精品一区二区三区四区| 国产精品日韩欧美制服| 精品久久久无码人妻中文字幕豆芽| 午夜精品久久久久久影视777 | 一级A毛片免费观看久久精品| 国产精品视频一区二区三区不卡| 久久这里只精品国产99热| 国产精品久久久久…| 国产成人精品日本亚洲| 久久夜色精品国产欧美乱| 亚洲精品无码久久久久久| 少妇亚洲免费精品| 久久性精品| 久久久久国产精品三级网| 黑人巨大精品欧美一区二区| 精品久久久久久无码中文字幕| 91亚洲国产成人久久精品网址| 桃花岛精品亚洲国产成人| 热久久国产精品| 亚洲国产精品久久66| 91精品国产91热久久久久福利| 中文字幕成人精品久久不卡| 99精品国产福利在线观看| 国产乱人伦偷精品视频| 精品亚洲欧美无人区乱码| 欧美久久亚洲精品| 亚洲韩国精品无码一区二区三区| 无码日韩精品一区二区免费暖暖 |