如果资源在不同的域上,如何使用service-worker?

pri*_*iti 2 javascript service-worker

我们知道服务工作者是从项目文件夹的根目录注册的,但有没有办法从不同的域中获取一些静态资源(css,js)?

示例:

  • myWebsite.com //主网址(例如index.html)
  • abc.com/css/style.css // css文件路径
  • xyz.com/js/jsFile.js // javascript文件路径

Kin*_*lan 5

来自页面的任何请求(iframe子资源除外)都将通过服务工作者.这些资源可以来自相同或不同的来源.您可以缓存这些资源,以便它们可以脱机使用,但作为开发人员,除非资源具有正确的CORS标头集,否则您无法操作或检查它们的内容.

例如,在安装事件中,您可以缓存不在您的域中的远程文件.

self.addEventListener('install', function(e) {
  e.waitUntil(
    caches.open('airhorner').then(function(cache) {
      return cache.addAll([
        'https://paul.kinlan.me/'
      ]);
    })
  );
});
Run Code Online (Sandbox Code Playgroud)