• JavaScript中的缓存API


    了解如何使用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)
    })

    广州vi设计公司 http://www.maiqicn.com 我的007办公资源网 https://www.wode007.com

    完全删除缓存

    caches.delete(cacheName).then(() => {
       console.log('Cache successfully deleted!');
    })
  • 相关阅读:
    [转] JavaScript中的字符串操作
    关于多线程学习的笔记
    [转] jquery 使用方法
    ubuntu下安装tomcat和配置mysql
    [转] 使用CodeViz生成C/C++函数调用关系图
    [转] java中的匿名内部类总结
    [转] Java中继承thread类与实现Runnable接口的区别
    字符串 指针、调试---师傅传授 栈中指针地址 与 堆中数据地址 标准写法
    maven 阿里云节点,速度快
    解决IntelliJ IDEA 创建Maven项目速度慢问题 DarchetypeCatalog
  • 原文地址:https://www.cnblogs.com/xiaonian8/p/13679483.html
Copyright © 2020-2023  润新知