使用 Service Worker 预缓存静态文件

Pre-cache statics files using Service Worker

我正在尝试使用 service worker 预缓存我的一些静态应用 shell 文件。我不能使用 'sw-appcache' 因为我没有使用任何构建系统。但是,我尝试使用 'sw-toolbox' 但我无法将其用于预缓存。

这是我在 Service Worker JS 中所做的:

self.addEventListener('install', function(event) {
  event.waitUntil(
    caches.open('gdvs-static').then(function(cache) {
        var precache_urls = [
            '/',
            '/?webapp=true',
            '/css/gv.min.css',
            '/js/gv.min.js'
        ];

        return cache.addAll(precache_urls);
    });
  );
});

我也试过这个:

importScripts('/path/to/sw-toolbox.js');

self.addEventListener('install', function(event) {
   var precache_urls = [
      '/',
      '/?webapp=true',
      '/css/gv.min.css',
      '/js/gv.min.js'
   ];

   toolbox.precache(precache_urls);
});

这是我的应用程序的 URL:https://guidedverses-webapp-staging.herokuapp.com/ 这是我的 service worker 文件的 URL:https://guidedverses-webapp-staging.herokuapp.com/gdvs-sw.js

我错过了什么?

傻我。我忘了将获取处理程序添加到我的服务工作者中。我认为它像 appchache 一样工作,并在与缓存 URL 匹配时自动 returns 缓存数据。我低估了 Service Worker 的力量。以下代码对我有用。

this.addEventListener('fetch', function(event) {
  console.log(event.request.url);

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