多虚拟目录站点

时间:2018-04-13 07:45:53

标签: javascript service-worker virtual-directory

我很难理解服务工作者的行为方式。 我在我的域的根目录中有一个Angular渐进式Web应用程序。此文件夹包含所有JavaScript文件。 然后我的每个客户端都有一个子文件夹,其中包含index.html文件,manifest.json和与此客户端相关的一些图像。 因此,索引文件指向父文件夹中的JavaScript文件。

现在我想要一个服务工作者来缓存根文件中的JavaScript文件和每个子文件夹中的索引文件。

现在我已将服务工作者放在根目录中,但对于每个客户端,它将缓存我不想要的所有其他客户端文件。每当我需要创建一个新的子文件夹时,我必须更新根目录中的服务工作者。有没有办法让多个服务工作者,每个子文件夹一个? (我知道它无法获取父目录中的文件)

1 个答案:

答案 0 :(得分:1)

是的,您可以通过指定选项scope为不同的路径注册多个服务工作者。

navigator.serviceWorker.register('/sw.js', {
  scope: '/path/to/folder1'
}).then(function(registration) {
  console.log('Service worker registration succeeded. This service worker will catch all http requests under /path/to/folder1');
});

navigator.serviceWorker.register('/sw.js', {
  scope: '/path/to/folder2'
}).then(function(registration) {
  console.log('Service worker registration succeeded. This service worker will catch all http requests under /path/to/folder2');
});

相关的MDN文章。

https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register