- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
不确定这是一个潜在的错误还是我做错了什么。
我正在使用基于 cli 的应用程序,@angular/serviceworker 5.1.0
@angular/cli 1.6.0
SW 的实现正是由 book
我将尝试描述发生了什么:
考虑一个正在运行服务工作线程的应用程序。软件缓存来自 ngsw.json
的数据。
现在,我将使用新的 budle hash 部署一个新的 ng build --prod
文件。
当前正在运行的应用程序的 ServiceWorker 将加载旧的缓存文件,除非明确要求通过 SwUpdate
服务进行更新。没关系。
但事情是这样的。打开新选项卡并加载应用程序的新实例后,它仍会加载旧文件。在网络日志中,没有获取新的 ngsw.json
。
两个选项卡是否使用相同的 ServiceWorker?
ServiceWorker 如何知道何时检查新的 ngsw.json
?
最奇怪的事情: 有时按 F5 后 ServiceWorker 仍在加载旧文件。有时它会加载新文件。有时它会尝试使用旧哈希获取文件并失败 (404)!
到目前为止我还没有弄清楚任何模式。
浏览器缓存是否可能导致问题?我尝试将服务器响应 header 添加到 no-cache
和 expire: 0 但没有区别。
最佳答案
在回答这个问题时,最新版本的 ngsw (@angular/service-worker) 是 8.2.13。
Do both tabs use the same ServiceWorker?
是的,两个选项卡都激活同一个服务 worker 。这样做是因为数据完整性,如果您让一个 service worker 在不同的选项卡上以不同的方式处理另一个 service worker,这将成为维护的噩梦。
How does the ServiceWorker know when to check for new ngsw.json?
当您调用生产构建时,ngsw.json 会更新,正如您所确定的那样:ng build --prod
。 Service Worker 不会将对 ngsw.json 的更新视为对 Service Worker 的更新。因此,它可以更新 Service Worker 的缓存,而无需创建新版本的 Service Worker,只需简单刷新即可,无需关闭浏览器选项卡。
如果更新了 service worker,应该安装一个新的 service worker 但它不会激活,直到所有关联的浏览器客户端(选项卡)都被安装已关闭,这样可以安全更新。
Sometimes upon hitting F5 the ServiceWorker still loading old files. Sometimes it loads the new files. Sometimes it tries to fetch files with old hash and fails (404)!
对于服务 worker ,刷新按钮的行为不正常。如果您正在进行硬重新加载,您将绕过 Service Worker 并请求新数据。此操作不一定会更新服务 worker 的缓存。因此,您可能会发现下一次刷新会加载旧数据,这些数据是从与旧 Service Worker 关联的缓存中检索到的。
Is it possible browser caching is causing problems?
要手动使 service worker 的缓存无效,请进入 DevTools > Application(选项卡)> Cache storage
并删除其内容。
关于angular-service-worker - Angular 5 ServiceWorker 未加载更新的 ngsw.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47802663/
我想做什么? 我正在创建一个渐进式 Web 应用程序 (PWA),为了正确发送升级应用程序,我正在处理通知用户的步骤,一旦用户说“升级”,serviceWorker 调用 skipWaiting()
我正在尝试在 Chrome 中测试推送通知功能。我在此处克隆了 Google 提供的示例 Chrome 推送通知 Web 应用程序:https://github.com/GoogleChrome/sa
我正在用 Service Workers 编写我的第一个应用程序,并试图获得注册以便与 pushManager 进行交互。 我可以使用以下任一方法执行此操作: nagivator.serviceWor
I'm wondering why ServiceWorkerRegistration has an updatefound event but no event that fires as s
这是一个奇怪的。 我正在开发 Django/Bootstrap 3 网络应用程序,最近我开始在 JavaScript 控制台中收到此错误: Failed to register/update a Se
我最近在和服务人员一起玩。我在Service Worker文件中写了一些代码,突然它坏了。是否有人知道“ServiceWorker脚本评估失败”是什么意思,何时可能出现? 最佳答案 通常,这意味着软件
在 ServiceWorker 范围内使用 RequireJS 导入外部库的正确方法是什么? 在 WebWorkers 范围内我们可以使用 importScripts() RequireJS in w
我有一个关于 ServiceWorkers 的问题。我知道这些 Worker 可能会被用户代理终止。如此终止的 ServiceWorker 是否仍然能够接收推送通知并唤醒它们? 如果没有,是否有关于该
我正在尝试更新我的 ServiceWorker。 我有一个旧的服务 worker ,一些窗口在它的控制之下。现在有一个新版本的ServiceWorker。它安装正确。但它不会为新页面激活。我的目标是为
自从 Google Chrome 新更新(版本 69.0.3497.92(官方版本)(64 位))以来,我在导航器中找不到 serviceWorker 服务。实际上我可以按如下方式注册我的 Servi
我已经实现了 ServiceWorker在我的一些网络应用程序上利用离线功能和一些与 ServiceWorkers 相关的其他好东西。现在,一切正常,直到我添加了一些外部嵌入式脚本。我在我的网络应用程
我正在尝试安装一个 ServiceWorker,它会在我每次更改当前使用的缓存版本时清除缓存。 我在 v0.0.1 缓存中缓存了 index.html,如果缓存版本更改为 v0.0.2 或其他任何版本
好的,我才刚刚开始使用 Service Workers。 我的 sw.js 中有以下代码: const cacheName = "v2" // Call Install Event self.addE
navigator.serviceWorker.register('/service-worker.js'); 如何在不初始化额外 AJAX 请求的情况下检索 /service-worker.js h
我致力于将 [Service Worker 技术] 实现到网站中。 除图像 外,一切都按预期工作。 图像根本没有加载。 我想知道这是否是预期的行为,或者是否应该加载图像。 为了重现此错误,我全新安装了
if ('serviceWorker' in navigator) { console.log('Service Worker is supported'); navigator.
我有一个简单的 service worker 安装 self.addEventListener('install', function(event) { console.log('Service
关闭。这个问题需要debugging details .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 上个月关门。 Improve this question 编辑
比如说,我想在 Android 上制作一个闹钟应用程序作为渐进式网络应用程序。 与原生闹钟应用一样,即使没有事件的网页,它也应该在选定的时间收到通知。 起初,我考虑过使用push api。但是当然离线
我的网站有 6 个不同的内容元素,我想通过服务工作线程特定的缓存方法来控制它们。 [预缓存]静态内容(css、js、字体) [缓存回退到网络] CDN(来自 CloudFront S3 的图像) [网
我是一名优秀的程序员,十分优秀!