ServiceWorker 在 Chrome 中硬重新加载 (Ctrl-Shift-R) 时失败 [英] ServiceWorker fails on hard reload (Ctrl-Shift-R) in Chrome

查看:45
本文介绍了ServiceWorker 在 Chrome 中硬重新加载 (Ctrl-Shift-R) 时失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么在硬重新加载 (Ctrl-Shift-R) 后 Service Worker 会失败?

Why does service worker fail after a hard reload (Ctrl-Shift-R)?

---- case 1 CHROME --- 成功

---- case 1 CHROME --- success

  1. 卸载 Service Worker
  2. 加载页面
  3. 页面安装 Service Worker
  4. Worker.postMessage() 成功
  5. 重新加载页面
  6. Worker.postMessage() 成功

---- case 2 CHROME --- 失败

---- case 2 CHROME --- failure

  1. 卸载 Service Worker
  2. 加载页面
  3. 页面安装 Service Worker
  4. Worker.postMessage() 成功
  5. HARD RELOAD (ctrl-shift-R) 页面(serviceworker 仍在根据 chrome://serviceworker-internals/运行)
  6. Worker.postMessage() 失败 -- 'error sentTypeError: 无法读取 null 的属性 'postMessage'
  1. Uninstall service worker
  2. Load page
  3. Page installs service worker
  4. Worker.postMessage() succeeds
  5. HARD RELOAD (ctrl-shift-R) page (serviceworker still running according to chrome://serviceworker-internals/ )
  6. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆