【问题标题】:What exactly happens (from a technical perspective) each time a PWA is opened up?每次打开 PWA 时(从技术角度来看)究竟会发生什么?
【发布时间】:2020-02-24 21:05:43
【问题描述】:

我一直在尝试找到一些有关此的官方文档,但找不到任何真正具体的内容。

每次用户在 Android 上打开 PWA 时(从技术角度来看)究竟会发生什么?在 iOS 上?

我之所以这么问,是因为当我在几天内没有接触 PWA 时,与我在 20 分钟前打开应用程序时的过程似乎有所不同。 Android(或 iOS)如何决定何时刷新页面与显示上次 PWA 打开时内存中的内容(和/或服务工作者缓存的内容)?它有没有做我想知道的其他事情,比如自动清除 cookie/缓存(一段时间后)?等等

我觉得它在做我应该知道的事情,但找不到任何相关的官方文档。我了解 Service Worker 的生命周期(大部分情况下),但我觉得正在发生其他事情。

【问题讨论】:

    标签: android ios google-chrome progressive-web-apps


    【解决方案1】:

    我有一篇关于 Service Worker 的一般性文章,我深入研究了 Service Worker 生命周期,这是一个非常深奥的话题。

    https://love2dev.com/blog/what-is-a-service-worker/

    如果您在闲置 20 分钟后打开 PWA,则不同的浏览器和操作系统会以不同的方式处理此问题。对于某些人来说,服务工作者可能仍然处于某种活着的状态,但处于睡眠状态。其他的完全死了。

    不用担心,任何浏览器都需要大约 6 毫秒才能将其唤醒以响应请求。

    现在在 iOS 上,Apple 非常积极地在几天后清除未使用的缓存。您有 14 天的时间来清除所有内容,因此您可以从头开始使用缓存。这就是为什么你应该在 service worker 激活时检查缓存的状态,等等。

    因此,永远不要假设您的内容已完美缓存。如果您知道您的应用程序每天都在使用,那么与临时使用的应用程序相比,您可能会放松很多。例如,一个商业应用程序将每周使用 5 天(理论上)。所以你可以感觉良好的iOS没有清除缓存。

    但是,即使资产没有被缓存并且用户连接到网络,您的应用程序仍然应该可以正常工作。当然,如果您想在上次使用后 30 天获得离线体验,那您就有点迷上了 iOS :( 只是苹果在 IMO 的众多缺点之一。

    【讨论】:

      猜你喜欢
      • 2015-12-25
      • 2012-01-15
      • 2018-02-18
      • 2015-10-23
      • 2011-01-18
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多