关于缓存API的服务工作者范围

时间:2019-05-08 08:14:22

标签: javascript caching service-worker browser-cache web-worker

我有一个多语言网站,并且已将每个版本添加到单独的目录中。

https://www.mywebsite.com/en
https://www.mywebsite.com/fa

我要使用服务工作者,将我的API保存在浏览器缓存中。由于我的目录分开,所以我这样注册了我的服务人员:

  window.addEventListener('load', () => {
    if (window.location.href.indexOf("/en/") > 0) {
      navigator.serviceWorker.register('/en/service-worker.js');
    } else {
      navigator.serviceWorker.register('/fa/service-worker.js');
    }
  });

我想拥有一个离线优先的应用程序,所以我已经在我的服务工作者文件中添加了:

self.addEventListener('fetch', function(event) {
  event.respondWith(
    caches.match(event.request).then(function(response) {
      return response || fetch(event.request);
    })
  );
});

我的API链接类似于:

https://www.api.com/path/...

如果我在 localhost 中运行我的应用程序并注册navigator.serviceWorker.register('/service-worker.js');之类的服务工作者,则一切正常,我的API保存在浏览器缓存中。 但是,如果我想在服务器上运行我的应用程序,它将无法缓存我的API。

是否会因为我的API URL与https://www.api.com/en/path/...不同而发生此问题? 解决该问题该怎么办?

任何帮助将不胜感激。

0 个答案:

没有答案