- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我加了几个workbox.routing.registerRoute
使用 staleWhileRevalidate
到我的应用程序,到目前为止它已经通过了 PWA 下的大多数灯塔测试。我目前根本没有使用预缓存。我的问题是,这是强制性的吗?如果没有预缓存,我会错过什么? workbox.routing.registerRoute
已经缓存了我需要的一切。谢谢!
最佳答案
没有什么是强制性的。 :-)
对所有 Assets 以及 HTML 使用 stale-while-revalidate 绝对是一种合法的方法。这意味着您不必在构建过程中做任何特殊的事情,例如,这在某些情况下可能会很好。
每当您使用从缓存中读取的策略时,无论是通过预缓存还是 stale-while-revalidate,都会有某种重新验证步骤,以确保您最终不会无限期地提供过时的响应。
如果您使用 Workbox 的预缓存,重新验证是有效的,因为浏览器只需要为您生成的 service-worker.js
发出一个请求。文件,并且该响应可作为预缓存内容是否实际更改的真实来源。假设您的预缓存 Assets 不会频繁更改,大多数情况下您的 service-worker.js
将与上次检索时相同,更新时不会再使用任何带宽或 CPU 周期。
如果您对所有内容使用带有 stale-while-revalidate 策略的运行时缓存,那么每个响应都会发生“while-revalidate”步骤。您几乎会立即将“过时”响应返回到页面,因此您的整体性能应该仍然不错,但是您会产生服务 worker “在后台”发出的额外请求,以重新获取每个 URL,并且更新缓存。这种方法使用的带宽和 CPU 周期有所增加。
除了使用额外的资源之外,您可能更喜欢预缓存而不是 stale-while-revalidate 的另一个原因是您可以提前填充完整的缓存,而不必等待它们第一次被访问。如果某些 Assets 仅用于您的 Web 应用程序的一个子部分,并且您希望提前缓存这些 Assets ,那么如果您只进行运行时缓存,这样做会比较棘手。
预缓存提供的另一个优势是它会更新您的缓存。这有助于避免出现以下情况:例如,一个 JavaScript 文件因在上一页上被请求而更新,但是当您导航到下一页时,较新的 JavaScript 与您的陈旧 HTML 提供的 DOM 不兼容。预先缓存所有内容可以减少这些版本不匹配发生的机会。 ( Especially if you do not enable skipWaiting
.)
关于progressive-web-apps - PWA 是否必须使用 Workbox 进行预缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49139975/
我从上周开始就对 PWA 进行研究,我发现 Workbox 是一个很好的实现选择,我尝试使用 React+worbox+webpack 来实现 PWA 我能够创建应用程序图标,缓存 GET apis
我让 Chrome 在 Android 上安装了我的 PWA - 一旦安装,我想自动关闭安装它的浏览器窗口,并打开 PWA(因此用户不会在浏览器窗口中继续,认为他们正在使用PWA) - 这可能吗? 最
我使用 cra-template-pwa 模板创建了一个带有 create-react-app 的 PWA,但我无法根据更改更新应用程序。 现在内容被正确检测到,消息显示在控制台中: New cont
mailto 链接在以前版本的 iOS 上按预期工作。在使用 mailto 链接打开默认邮件应用程序时更新到 12.2+ 后,邮件应用程序可以正常工作。但是当回到 PWA 时,由于 iOS 功能更新到
我你去应用https://quotesaboutjesus.netlify.com/quotes并查看 Chrome 开发工具中的“应用程序”选项卡,几秒钟后您会看到服务工作线程运行良好...并且该应
我已经构建了一个带有角度前端的 ASP.NET Core 应用程序。角度应用程序具有 @angular/pwa节点包设置,因此它是一个渐进式 Web 应用程序,可以安装在 android/window
嘿寻找一些见解, 所以我以前从未使用过 Ionic,并试图给自己一个使用它的理由。但是,根据我一直在阅读的内容——根据项目的用例,一个可能比另一个更合适。我正在尝试构建一个不使用大量 native 功
有 3 种方法可以将 AMP 与 PWA 结合起来(如 here 中所述): 具有 PWA 功能的 AMP 页面 AMP 作为 PWA 的入口点 AMP 作为 PWA 的数据源 在第一种和第三种方法中
我正在结合企业应用服务器开发 PWA。 应用程序服务器为独立浏览器提供响应式 Web View ,并借助首次在 PWA 启动 url 上设置的 PWA cookie 自定义 PWA 上的 View 。
您好,我正在开发 Nextjs 项目,我尝试使用 next-pwa 将其转换为 PWA,首先我创建了 next.config.js const withPWA = require('next-pwa'
我正面临 Service Worker 的问题。 Service Worker 没有通过 app.module 自行注册。所以我在main.ts中手动注册它。 它在在线模式下工作正常 .但是当我将网络
我已将 PWA 功能和 service worker 添加到我的 angular 网站。发布到实时服务器后,许多用户开始遇到问题,例如:“无法访问此站点”,但是当用户单击 CTRL+ F5 时,它可以
我应该如何将分析集成到 PWA网络应用程序?如果我将来自 google 分析的分析添加到 webapp 中并将其发布在服务器中,那么稍后,如果我想在 Google Play 商店上发布它,我应该如何跟
当用户单击后端生成的通知时,我实际上打开了一个新窗口,这在浏览器上运行良好,因为它会在浏览器打开时打开一个新选项卡,否则打开一个新窗口。 但是如果我安装了 PWA,在收到通知时单击它会打开一个新的浏览
最近几天,我开始听说服务人员很酷。我想在我的 Angular 项目中实现服务人员,使我的 Web 应用程序完全离线工作,这意味着用户应该尽可能多地离线处理数据,一旦他们找到互联网,那么数据应该使用 M
我基于 current version 编写了一个简单的 PWA ( this tutorial)通过 Vaadin .它工作正常,在 Chrome 中测试过,也在离线模式下。 在移动设备上使用它会出
是否可以将图片直接从移动图库共享到 PWA(与我们发送图片时 What's app 或 Messenger 的行为相同),还是我需要一个 native 应用程序才能做到这一点?我正在构建的网站允许用户
下面是 our nuxt and nuxt-pwa的配置配置。 Nuxt pwa is recognising a new version available我们提示用户进行硬刷新/重新加载。 并且在
我的桌面通知在我的渐进式网络应用程序 (PWA) 中运行良好。打开 PWA 后,当我单击通知时,我能够接收通知的数据属性。当 PWA 关闭时,当我单击通知时,PWA 将打开,但我的 onclick 处
根据 PWA Web Bluetooth documentation ,它支持“BR/EDR 或 LE 连接”。 我正在尝试在 Chrome devtools 的控制台中使用以下代码进行测试: nav
我是一名优秀的程序员,十分优秀!