支持 workbox-cli 中 non-webpack 用户的捆绑

Support bundling for non-webpack users in workbox-cli

我是 运行 我的 dist 目录中的以下命令。

workbox copyLibraries dist/en-in/; workbox generateSW workbox-config-prod.js;

Service Worker 文件调用

importScripts("/workbox-v4.3.1/workbox-sw.js");

workbox-sw.js 下载以下文件:

   workbox-core.prod.js
   workbox-precaching.prod.js
   workbox-routing.prod.js
   workbox-strategies.prod.js
   workbox-expiration.prod.js
   workbox-cacheable-response.prod.js"

问题 1:

我已经为从 /workbox-v4.3.1/ 路径提供的所有文件设置了长期过期缓存 headers 因为它是版本化的。这种方法有什么缺点吗?

问题二:

Workbox 能否为不使用任何捆绑器的团队提供支持?

如果workbox-cli可以输出单个文件,其中有 1. 仅在 workbox-config 文件中引用的那些 Workbox 模块。 2. 从 workbox-config 文件生成的代码。 3.缩小版 这就是 sw-precache 用来生成服务工作者文件的方式。

I have set long expiry cache headers on all files served from /workbox-v4.3.1/ path since it is versioned. Is there any downside to this approach?

这种方法没有缺点,因为正如您提到的,/v4.3.1/ 路径段用于您的 URL,因此内容永远不会改变。关于是否实际检查通过 importScripts() 加载的 URLs(所有 Workbox URLs 都会发生)有一些细微差别,这在 [=17 中有详细说明=].但是你用 Cache-Control headers 做的应该没问题。

Can Workbox provide support for teams which don't use any bundlers?

对于 Workbox v5(截至 2019 年 11 月,在 pre-release 中)这很简单,使用 generateSW 和以下配置:

{
  inlineWorkboxRuntime: true,
  mode: 'production',
  sourcemap: false,
  // ...other options...
}

这将生成一个单一的服务工作者文件,其中包括内联的 Workbox 运行时,缩小的,没有源映射,这与输出得到的一样简单。在后台,Workbox 将使用 Rollup 为您创建一个自定义捆绑包,该捆绑包仅包含您实际需要的 Workbox 部分,因此您不必担心自己进行捆绑。