【发布时间】:2017-06-13 16:10:03
【问题描述】:
我正在使用 sw-precache 通过 Polymer CLI 构建过程生成我的服务工作,因此它旨在更新已更新文件的哈希以表明需要更新缓存。但是我更新的内容没有在缓存中被替换,所以如果我用 ctrl+r 刷新它会得到一个旧版本,但如果我用 ctrl+shift+r 刷新它就会得到新版本。一个原因可能是我的 Service Worker 没有更新。
This doc 声明
如果 service worker 文件中有一个字节的差异 与现有的相比,它认为它是新的。
,但是如果我的新服务工作者没有更改一个字节怎么办? (如果只有一个哈希发生了变化,就会发生这种情况)。如何配置 sw-precache 以在每个新请求时更新服务工作?
【问题讨论】:
-
你看过这个吗? developer.mozilla.org/en-US/docs/Web/API/… 并且请确认哈希是否正常工作:这意味着在更改缓存的资产文件后,它会将其反映到服务工作者内容中。换句话说,服务工作者中的哈希值更改。请注意,SW 不关心也无法检查资产文件的内容或版本。唯一可以触发它更新的是它自己的内容。因此,资产文件中的更改应该反映到它们在 SW 中的引用。例如
/style.css?{hash-of-the-file} -
我确定哈希值正在改变。我没有测试的“skipWaiting”,我已经阅读了文档,我的理解是这是为了在不重新加载页面的情况下强制更新。我的情况似乎有所不同,因为服务工作者的生命周期结束时,有另一个人在等待并且页面重新加载,而不需要“skipWaiting”。
-
这根本不是真的。 see the documentation...新版本已在后台安装,但尚未激活。仅当不再加载任何仍在使用旧服务工作者的页面时才会激活它。一旦不再加载此类页面,新的 service worker 就会激活。
-
嘿,请注意:有一个another question,其中I have just replied。可能也有对您有用的信息,因为它与您的非常相似。
标签: html service-worker offline-caching progressive-web-apps sw-precache