【发布时间】:2018-04-25 07:46:23
【问题描述】:
我已经使用 Google 的 workbox-build 包将服务工作者集成到使用 ReactJS 构建的单页应用程序中。
我在 index.html 的预缓存方面遇到了一些问题,特别是每次我们发布新版本时,Service Worker 都会为过时的 index.html 提供服务。由于它提供过时的 index.html,因此找不到主 JavaScript 文件,因为它是基于构建版本控制的。
</div><script type="text/javascript" src="/static/js/main.fa34a3ce.js"></script>
我还尝试从预缓存中删除 index.html,并将其放在运行时缓存中,并设置为网络优先。但它似乎没有被 service worker 缓存。
runtimeCaching: [
{
urlPattern: /\/$/,
handler: 'networkFirst',
options: {
cacheName: 'my-cache-index'
}
}
]
【问题讨论】:
-
你可以试试这个:github.com/jantimon/html-webpack-plugin。它在每次构建时从模板创建 index.html。
-
嗨@AliAnkarali,感谢您的回复。我忘了说我们正在使用 create-react-app 并且如果可能的话不想倾向于弹出。
-
您很可能会遇到常见的双重缓存情况,请参阅:Cache Control 以及 Chrome 中即将发生的更改Fresher Service Workers
-
@DeanTaylor,正如你所说。我能够探索到为我们的 service-worker.js 文件提供服务的 NGINX 配置,并且在将 Cache-Control 标头添加到我们的 NGINX 配置中的特定位置块后,我能够修复它。谢谢!
-
@user3477119 我已经通过评论发布了答案,请随时将其标记为答案。
标签: reactjs service-worker workbox