首页 > 其他分享 >cache API简介

cache API简介

时间:2023-02-02 19:34:58浏览次数:42  
标签:简介 cache API test open match caches

cache API是一个很强大的API,它可以在window环境和serviceWorker环境使用,配合serviceWorker可以让我们自己来管理缓存。

caches

caches是一个全局接口,可以在window和worker下访问到。我们可以使用caches.open来获取(如果没有的话会创建)一个cache对象:

caches.open('test').then(cache => console.log(cache));

此外, caches还有以下API:

caches.has('test') // 有没有cacheName为test的cache
caches.delete('test') // 删除一个cache对象
caches.match('https;//www.baidu.com') //找到一个url对应的cache 响应
caches.match('https;//www.baidu.com', {cacheName:'test'}) //在指定的cacheName下找到一个url对应的cache 响应

需要注意的是,上面的API都返回一个promise

cache对象

如果把caches理解成数据库,那么cache对象就像一张表,关联了request 和 response, cache对象有以下方法:

cache.add, cache.addAll

这两个方法都可以把一些请求缓存下来,区别在于addAll可以接受多个请求或者url。常用于提前缓存一些静态资源。

cache.add('https://www.baidu.com?a=1');

// serviceWorker
addEventListener('install', event => {
  const preCache = async () => {
    const cache = await caches.open('static-v1');
    return cache.addAll([
      '/',
      '/about/',
      '/static/styles.css'
    ]);
  };
  event.waitUntil(preCache());
});

cache.put

cache.put 接受两个参数,一个request, 一个response,这让我们可以更新缓存或者伪造响应。

caches.open('test').then((cache) => {
    cache.put('/hello', new Response('hello word', {status: 200}))
} )

cache.match

与caches.match用法一样,匹配一个request对应的response,如果没有,则返回undefined

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

    cache.match('/hello').then(res => res?.text()).then(console.log)
} )

cache.delete

删除一个缓存,成功返回true,失败返回false

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

    cache.delete('/hello').then(console.log)
} )

总结

上面就是cache API的内容了,当它可以service Worker一起使用的时候,可以发挥出巨大的威力

标签:简介,cache,API,test,open,match,caches
From: https://www.cnblogs.com/imgss/p/17083338.html

相关文章

  • 常用API大全分享!赶紧收藏起来!
    一、短信发送短信的应用可以说是非常的广泛了,短信API也是当下非常热门的API~短信验证码:可用于登录、注册、找回密码、支付认证等等应用场景。支持三大运营商,3秒可达,99.9......
  • VUE API接口的统一管理
    vue项目对api进行封装统一管理在日常vue项目中或刚接收一个vue项目,如果项目足够大,就需要进行统一管理和规范接口了1.js文件创建先在src目录下新建一个api文件夹,然后......
  • 使用python编写简单的api接口
    先安装flask模块pipinstallFlaskpy文件fromflaskimportFlask,request,jsonifyapp=Flask(__name__)@app.route('/hello_world')defhello_world():r......
  • Yapi 部署 (Docker-compose部署)
    目录资源清单一、Docker安装1.使用国内yum源2.卸载旧版本的docker3.安装Docker20.10版本4.设置镜像加速5.启动docker二、Docker-compose安装1.Docker-compos......
  • API(Calendar)
    Calendar代表系统当前的时间日历对象,可以单独修改获取时间中的年月日Calendar是一个抽象类,不能创建对象,获取Calendar日历类对象的方法:publicstatic  Calendar get......
  • apiview、request、response源码分析、serializer基本使用
    昨日回顾#1restful规范 -https协议,保证安全-接口中带api标识 -api.baidu.com-www.baidu.com/api -接口中带版本标识-接口即资源,尽量用名......
  • Dubbo 入门系列之基于 Dubbo API 开发微服务应用
    目标从零上手开发基于Dubbo的微服务难度低环境要求系统:Windows、Linux、MacOSJDK8及以上(推荐使用JDK17)GitIntelliJIDEA(可选)Docker(可选)动手实......
  • json格式数据,淘宝1688京东商品详情获取,便携式API接口
    商品详情API接口,万邦数据返回值说明,商品详情,关键词搜索,价格监控,卖家买家订单等相关数据接口商品详情获取 测试接口 json格式数据 "item":{ "num_iid":"583191269......
  • Apipost产品介绍
    Apipost主要分为4个大模块,贯穿一个API从设计到测试完成上线的研发全周期:API设计:用于在接口还没开发完成时,预定义接口请求参数和响应期望(Mock),并自动生成MockURL,让......
  • API(SimpleDateFormat)
    SimpleDateFormat的作用:可以格式化,把时间变成我们喜欢的类型,还可以解析,把字符串表示的时间变成Date对象public  SimpleDateFormat()默认格式public  SimpleDateForm......