ServiceWorker 在 Chrome 中硬重新加载 (Ctrl-Shift-R) 时失败 [英] ServiceWorker fails on hard reload (Ctrl-Shift-R) in Chrome
问题描述
为什么在硬重新加载 (Ctrl-Shift-R) 后 Service Worker 会失败?
Why does service worker fail after a hard reload (Ctrl-Shift-R)?
---- case 1 CHROME --- 成功
---- case 1 CHROME --- success
- 卸载 Service Worker
- 加载页面
- 页面安装 Service Worker
- Worker.postMessage() 成功
- 重新加载页面
- Worker.postMessage() 成功
---- case 2 CHROME --- 失败
---- case 2 CHROME --- failure
- 卸载 Service Worker
- 加载页面
- 页面安装 Service Worker
- Worker.postMessage() 成功
- HARD RELOAD (ctrl-shift-R) 页面(serviceworker 仍在根据 chrome://serviceworker-internals/运行)
- Worker.postMessage() 失败 -- 'error sentTypeError: 无法读取 null 的属性 'postMessage'
- Uninstall service worker
- Load page
- Page installs service worker
- Worker.postMessage() succeeds
- HARD RELOAD (ctrl-shift-R) page (serviceworker still running according to chrome://serviceworker-internals/ )
- Worker.postMessage() fails -- 'error sendingTypeError: Cannot read property 'postMessage' of null'
推荐答案
shift-reload 时,重新加载的页面 不会被 service worker 控制.这是 Service Worker 规范的一部分.
When you shift-reload, the reloaded page will not be controlled by a service worker. This is part of the service worker specification.
这仅适用于下一页加载.假设页面在 one 的范围内,未来的页面加载(不涉及 shift-reload)将继续由 Service Worker 控制.
This just applies for that next page load. Future page loads (that don't involve shift-reload) will continue to be controlled by a service worker, assuming that the page is in scope of one.
这篇关于ServiceWorker 在 Chrome 中硬重新加载 (Ctrl-Shift-R) 时失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!