workbox - 支持在 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-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 部分,因此您不必担心自己进行捆绑。