问题标签 [progressive-web-apps]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6235 浏览

javascript - 检查 ServiceWorker 是否处于等待状态

我正在尝试了解 Service Worker API,并且我知道有关注册 Service Worker 的点点滴滴。

如 API 文档中所述,如果发现 Service Worker 更新,则注册 Service Worker 并将其添加到队列中。当且仅当页面被关闭并再次打开时,此 SW 才会接管页面。即,窗口被关闭并再次重新打开。

现在,这有一些缺点:

  1. 用户可能会看到以前的版本可能有非常严重的语法错误,或者其他什么。

  2. 需要以某种方式通知用户内容已更改并且引用会执行此操作。

我知道如何告诉SW.jsskipWaiting()接管。我也知道如何发送消息SW.js告诉它用户想要自动刷新。

但是,我不知道的是如何知道一个新的 SW 是否真的处于等待状态。

我用过这个:

但是,它通常会返回等待状态null。(可能是因为触发请求时 SW 仍在安装。)

我如何在客户端页面上知道等待的服务人员可用?

0 投票
1 回答
749 浏览

service-worker - sw-toolbox 的 cacheFirst 处理程序与最快处理程序的优缺点是什么?

我已经阅读了sw-toolbox API 文档和其他一些关于该主题的文章。

我的印象是,如果我使用toolbox.fastest,我将不必管理我的缓存,因为当网络请求返回时缓存会更新。不过,我担心固有的网络请求将成为瓶颈。是这样吗?

在评估这两个处理程序时,我还应该考虑其他任何事情吗?

0 投票
2 回答
865 浏览

service-worker - 如何通过 Service Worker 解决动态 URL 依赖关系?

虽然我熟悉库Sw-precacheSw-toolbox但仍然对如何在使用 Angular 构建渐进式 Web 应用程序时满足动态依赖关系感到困惑。

我使用 Sw-precache 构建过程为我的应用程序预缓存了 bundle.js、bundle.css 和一些静态模板。(假设我所有的模板(.html 文件)都依赖于 bundle.js 和 bundle.css)

  1. 如果我更新未预缓存的模板怎么办?如何确保更新 bundle.js/css 连同我的模板。

  2. 如果我更新已经预缓存的模板怎么办。它是否总是与预缓存的 bundle.js/css 文件一起更新。

  3. 最后一个用例,当我的模板已经预缓存但它有一些带有 src 属性的内联脚本并且这个脚本文件没有缓存在任何地方时。假设我对模板和脚本文件进行了一些更改。我应该遵循什么缓存方法来确保模板文件与脚本文件一起更新。

我们没有遵循纯 App-shell 架构,它就像使用 Angular.js 设计的单页应用程序

0 投票
1 回答
3222 浏览

service-worker - 如何创建 Service Worker 以在 Progressive Web App 中存储动态内容?

我开发了一个带有静态内容的渐进式网络应用程序。它在处理静态内容时运行良好,但每当我们尝试从 MS SQL 数据库动态获取数据时,它就无法按预期工作。如何从 MS SQL 数据库中获取动态数据并将其显示到缓存页面或如何使用仅限网络的功能?我是否需要对service-worker.js文件进行任何更改才能检索动态数据?

服务工作者.js:

0 投票
2 回答
1498 浏览

javascript - 成功安装 Service Worker 时更新 UI

看起来 Service Worker 在工作人员上下文中运行并且无权访问 DOM。但是,一旦安装了 Service Worker,我希望我的用户知道该应用程序现在可以离线工作。我怎样才能做到这一点?

0 投票
1 回答
2198 浏览

polymer - 聚合物服务和服务工作者

我正在尝试开始调试我的 Polymer 应用程序。我通过复制我认为的东西来手工制作它PolymerCLI Polymer init

我不确定什么正在加载服务人员。用于开发的默认设置只是打了一个console.info()电话,说它已被禁用用于开发。

当我Polymer serve过去在 localhost:8080 上为我的应用程序提供服务时,我收到了 console.info 消息,尽管我没有实际加载文件的地方service-worker.js。因为应用程序要复杂得多(而且我正在尝试使用 http/2),所以我也有自己的基于节点的服务器。当我运行它然后在浏览器中获取我的应用程序时,service-worker.js 不会被加载和运行。

正在Polymer serve做什么来启用它?

0 投票
1 回答
680 浏览

firebase - Firebase 部署 - 不加载新页面

我正在使用聚合物项目网站上的教程将 PWA 部署到 firebase。我部署到 Firebase 没有问题,但如果我第二次部署新页面不会加载。它将加载旧页面,直到我清除 cookie。我明白 PWA 网站的工作方式就像一个应用程序,它将部分存储在内存中以加快加载时间。是否需要更改设置以使其加载最近部署的网页?感谢所有的帮助,在此先感谢!

0 投票
1 回答
399 浏览

android - gcm 推送通知,渐进式 webapp

我按照谷歌文档创建了一个渐进式网络应用程序,我刚刚实现了推送通知,但是每当我关闭应用程序时,我都没有收到任何通知。

whatsapp 等其他应用程序似乎能够发送这些通知,本地通知和渐进式 web 应用程序的 gcm 推送通知之间有区别吗?

0 投票
3 回答
381 浏览

html - Service Worker 是否会争夺带宽?

在页面加载时,Service Worker 会在后台安装。

1) 服务工作者脚本的下载是否与页面加载并行发生并延迟加载?

2)安装事件中提到的资产是否与页面加载并行下载和缓存,或者在页面加载事件完成后

3) 资产缓存是否尊重 HTML Native 缓存,还是每次都重新下载?

0 投票
2 回答
2173 浏览

google-analytics - 在启用离线的网络应用程序中处理 Google 分析

我是Codiva-java ide 和在线编译器的开发人员。我正在努力改进离线支持,减少网络使用,通过尽可能多的预缓存来减少延迟。

我想知道如何处理对谷歌分析的请求。

  1. 首先是 ga 脚本。我使用谷歌标签管理器来设置 GA。缓存那个请求可以吗,也就是这个请求可以使用networkFirst策略吗?还是应该始终是 networkOnly?

  2. 如何确保正确跟踪离线发生的操作?

  3. 我打算开始使用 Firebase 来处理一些功能,firebase 也有一些分析。当设备离线时,它会自动处理分析吗?