这更像是一个服务工作者的问题,尽管它可能更具体地针对Sapper。 我真的不知道,因为我是第一个管理服务工作者的人,我几乎没有使用过它们,并且经常觉得它们很痛苦。
基本上,无论我做什么,我都无法让 localhost:3000 停止加载应用程序的旧副本。 我以各种方式取消注册了服务工作进程,包括尝试以编程方式取消注册。 我已经清除了缓存,甚至清除了浏览器中的所有浏览数据。 我的 Sapper 开发环境中的服务器未运行。
这发生在 Brave 身上,但在 Opera 中表现相同,似乎是一般的 Chromium 场景。 我不使用Firefox或Safari,但可能会很快测试一个,看看那里发生了什么行为。
这是一个剪辑,显示了我如何尝试注销服务辅助角色。
https://youtu.be/Cb24I_fEklE
我使用了这个像魅力一样的小技巧。在您的rollup.config.js
中,outputs
对象中有一个serviceWorker
对象。
serviceworker: {
input: config.serviceworker.input(),
output: config.serviceworker.output(),
plugins: [
resolve(),
replace({
"process.browser": true,
"process.env.NODE_ENV": JSON.stringify(mode),
}),
commonjs(),
!dev && terser(),
],
preserveEntrySignatures: false,
onwarn,
},
如果尚未声明,请在顶部定义一个变量dev
:
const dev = process.env.NODE_ENV === "development";
现在像这样更改服务工作进程配置:
serviceworker: !dev && {
input: config.serviceworker.input(),
output: config.serviceworker.output(),
plugins: [
resolve(),
replace({
"process.browser": true,
"process.env.NODE_ENV": JSON.stringify(mode),
}),
commonjs(),
!dev && terser(),
],
preserveEntrySignatures: false,
onwarn,
},
清除缓存,这是我唯一可以绕过它的方法。
问题是服务工作者是来自缓存的服务,再次从缓存提供服务可能会重置缓存中的此项目,因为发送更有效,并且您陷入了某种循环。
--
我发现这个问题是因为我正在考虑完全删除服务工作者以尝试使我的网站性能更高一点......
这是非常必要的吗?它有什么好处?
请确保关闭运行应用的任何浏览器选项卡,当服务辅助角色为应用程序的现有版本提供服务时,无法替换该服务辅助角色。如果存在任何缓存问题,请尝试在安装服务工作进程后重新加载页面。