【问题标题】:How web app can used offlinely base on Service Worker?Web 应用如何基于 Service Worker 离线使用?
【发布时间】:2020-07-17 11:02:22
【问题描述】:

我知道有很多关于 Service Worker 的文档,也有很多问题已经问过了。

但是今天对我来说是漫长的一天,所以我现在阅读很多文档很累。

我只是想解释一下我对Service Worker的看法,它如何帮助我们离线提供Web应用程序,希望大家能告诉我它是否正确。

我所知道的关于Service Worker的一切都是拦截在浏览器的网络请求工作上,并且做某物。所以我猜当它拦截时,它会缓存每个请求。因此,当网络未连接时,Service Worker 使用它缓存的数据为用户提供服务

感谢大家的回复,

【问题讨论】:

    标签: web service-worker


    【解决方案1】:

    是的,你的想法是对的。在这里,我将提供有关整个功能的更多详细信息。

    service worker (SW) 与 web worker 类似,运行在与主 web 应用程序使用的线程不同的线程上。这使得 SW 即使在未打开 Web 应用程序时也能继续运行,例如允许接收和显示 Web 通知。

    SW 与 Web Worker 不同,用于一般用途,专门充当我们的 Web 应用程序和网络之间的代理。然而,由我们来定义和实现 SW 必须在本地缓存数据的内容和方式,否则,默认情况下,SW 不知道在缓存中存储什么。

    为此,我们必须实施针对静态资产(例如 .js 或 .css 文件)甚至 URL 的缓存策略(但请记住,由SW,只能缓存 GET 调用,不能缓存 PUT/POST)。 一旦在特定策略范围内定义了我们感兴趣的资产或 URL,SW 将拦截所有传出请求并查看是否有匹配项,并最终从本地缓存中提供数据,而不是通过网络。

    当然,这取决于我们选择/实施的策略。

    由于请求的数据已经在本地可用,即使用户离线,SW 也可以交付。

    如果有兴趣,I wrote an article, describing in detail the service workers 和一些最常见的缓存策略,适用于不同的场景。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 2020-11-16
      • 2017-07-06
      • 2023-02-07
      • 2018-01-24
      • 2020-08-25
      相关资源
      最近更新 更多