工作箱2.1.0预处理问题

时间:2017-12-05 11:39:33

标签: gulp progressive-web-apps workbox

我正在使用workbox 2.1.0来生成服务工作者,需要从服务器的assets目录(比如index.html和clear.png)和CDN中的一个文件中预先缓存一些文件(比如https://akamai.com/dummy/path/app.js )。 我正在使用gulp进行建设。这就是代码的用法

gulp.task('sw', () => {
      return wbBuild.generateSW({
          globDirectory: '.',
          swDest: 'sw_gulp_generated.js',
          staticFileGlobs: [
              'index.html',
              'clear.png'
              ],          
          verbose: true,
  })
      .then(() => {
        console.log('Service worker generated.');
      })
      .catch((err) => {
        console.log('[ERROR] This happened: ' + err);
      });
    });

所以,这样工作正常,生成的服务工作者将这两个文件都放在预先缓存列表中,在这里:

const fileManifest = [
  {
    "url": "index.html",
    "revision": "b6eb7cd7599ed6584a715cdfc75a81c0"
  },
  {
    "url": "clear.png",
    "revision": "e17de36d2c2ddf7b068892fa4678cd31"
  },

];
const workboxSW = new self.WorkboxSW();
workboxSW.precache(fileManifest);
//more code follows ...

我经过测试,效果很好

现在,问题:如何在预缓存列表中添加第三个资产(https://akamai.com/dummy/path/app.js)。我尝试将其放入staticFileGlobs,但错误地说:

One of the glob patterns doesn't match any files

显然是因为它试图在globDirectory中找到文件https://akamai.com/dummy/path/app.js并且无法找到它。

所以,基本上,在使用gulp(或任何构建工具)时,如何在生成的服务工作者的预先缓存列表中注入CDN URL?

1 个答案:

答案 0 :(得分:0)

generateSW看起来不接受自定义select box, Location from #tempX where box in (select Box from #tempX group by Box having count(Box) > 1) order by box, Location 规则。您可以传递runtimeCaching选项。如果客户端请求第三方文件,它只会缓存第三方文件。由于如果请求导致错误响应,它就是第三方请求,则会缓存错误响应并not updated

precache