【发布时间】:2017-05-16 07:17:05
【问题描述】:
我正在尝试使用sw-precache,但我一定是做错了什么!
我主要使用github repo 提供的演示代码,似乎无法获得应用程序的更新。一旦它第一次被缓存,它就不会检查新版本。
我期待当我发布一个新的服务工作者时,浏览器会请求新的服务工作者并在后台相应地更新缓存。然后使用registration code in the example,我将能够提示用户刷新并从他们新刷新的缓存中获取最新版本。
如果有人能指出正确的方向,我将不胜感激。
示例
为了演示这个问题,我在这里创建了一个单独的示例: https://github.com/stevenocchipinti/sw-precache-demo
该示例使用来自create-react-app 的基本骨架,它具有内置的构建任务,负责对文件名进行指纹识别等。
我怀疑问题在于我使用以下 sw-precache 配置缓存所有内容:
{
"staticFileGlobs": [ "build/**/*.*" ],
"stripPrefix": "build/"
}
repo 的自述文件中有更准确的步骤,但我为重现问题所采取的基本步骤如下(我的预期可能不正确)。
步骤和假设
浏览到第一个应用程序
我应该在控制台中看到Content is now available offline!重新加载页面
控制台中的消息不应再次出现,因为已安装 Service Worker,但该页面仍应正常工作。离线并重新加载页面
该页面应该仍然可以工作对源代码进行可见的更改
重建(运行构建任务和
sw-precache)
这就是我的理解有误的地方
-
重新加载页面
- Service Worker 应该在后台更新缓存
- 完成后,您应该会在控制台中看到
New or updated content is available. - 实际可见更改在下次重新加载之前不可见
-
重新加载页面
- 这次浏览器将使用新的缓存
- 现在应该可以看到更改了!
- 控制台中不应有任何消息
问题
一旦应用最初被缓存,它将永远不会更新,除非您取消注册服务工作者或强制重新加载。
我不确定如何完成这项工作 - 任何帮助将不胜感激!
【问题讨论】:
标签: caching offline service-worker progressive-web-apps sw-precache