Javascript ServiceWorker ifs为特定内容定义特定缓存

Javascript ServiceWorker ifs为特定内容定义特定缓存,javascript,service-worker,Javascript,Service Worker,我的网站有6个不同的内容元素,我想通过特定于服务工作者的缓存方法来控制它们 [precache]静态内容(css、js、字体) [缓存回退到网络]CDN(来自CloudFront S3的图像) [网络回退到缓存]索引(主页) [缓存回退到网络]页面(domain.com/sth->html) [pass]API(ajax调用) [pass]其他东西(分析、标签管理器) 我在ServiceWorker获取事件中提出了6个“如果” 我的问题是。。。这是一个好方法吗?不是方法。。。因为它是特定于我的网

我的网站有6个不同的内容元素,我想通过特定于服务工作者的缓存方法来控制它们

  • [precache]静态内容(css、js、字体)
  • [缓存回退到网络]CDN(来自CloudFront S3的图像)
  • [网络回退到缓存]索引(主页)
  • [缓存回退到网络]页面(domain.com/sth->html)
  • [pass]API(ajax调用)
  • [pass]其他东西(分析、标签管理器)
  • 我在ServiceWorker获取事件中提出了6个“如果”

    我的问题是。。。这是一个好方法吗?不是方法。。。因为它是特定于我的网站/博客的。但是你怎么看待这个假设呢?这是过滤特定内容并使用适当缓存的正确方法吗

    var domain = location.host.split('.')[0]
    
    regexStatic = new RegExp('https://' + location.host + '/build/(.*)')
    regexCdn = new RegExp('https://cdn.' + domain + '(.*)')
    regexIndex = new RegExp('https://' + location.host + '/')
    regexApi = new RegExp('https://' + location.host + '/api/(.*)')
    regexPages = new RegExp('https://' + location.host + '/(.*)')
    
    self.addEventListener('fetch', function (event) {
      // STATIC
      if (regexStatic.test(event.request.url)) {
        event.respondWith(
          //
        )
        return
      }
    
      // CDN
      if (regexCdn.test(event.request.url)) {
        event.respondWith(
          //
        )
        return
      }
    
      // INDEX
      if (regexIndex.test(event.request.url)) {
        event.respondWith(
          //
        )
        return
      }
    
      // API
      if (regexApi.test(event.request.url)) {
        return
      }
    
      // PAGES
      if (regexPages.test(event.request.url)) {
        event.respondWith(
          //
        )
        return
      }
    
      // OTHER
      console.log('NOT INCLUDED IN CACHE: ', event.request.url)
    })
    

    你为什么要划分内容

    如果在缓存中找不到内容,它将自动转发到网络进行获取,否则将提供本地缓存副本

    在进行API调用时只需检查
    内容类型
    ,不要缓存这些响应

    只需将内容分为两类<代码>可缓存/
    不可缓存

    在此处获取更多信息:


    你为什么要划分内容

    如果在缓存中找不到内容,它将自动转发到网络进行获取,否则将提供本地缓存副本

    在进行API调用时只需检查
    内容类型
    ,不要缓存这些响应

    只需将内容分为两类<代码>可缓存/
    不可缓存

    在此处获取更多信息: