首页 > 解决方案 > 支持在 workbox-cli 中对非 webpack 用户进行捆绑

问题描述

我在我的 dist 目录上运行以下命令。

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

服务工作者文件调用

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"

问题一:

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

问题2:

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

如果 workbox-cli 可以输出具有 1 的单个文件。只有那些在 workbox-config 文件中引用的 Workbox 模块。2. 从 workbox-config 文件生成的代码。3. Minified 这就是 sw-precache 用来生成 service worker 文件的方式。

标签: workbox

解决方案


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

这种方法没有缺点,因为正如您所提到的,/v4.3.1/路径段在您的 URL 中使用,因此内容永远不应更改。关于是否实际检查通过加载的 URL(所有 Workbox URL 都会发生这种情况)是否进行更新存在一些细微差别,本文对此importScripts()进行了详细说明。但是你用标题做的应该没问题。Cache-Control

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

使用 Workbox v5(截至 2019 年 11 月,预发布)很简单,使用generateSW以下配置:

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

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


推荐阅读