web app 如何基于 Service Worker 实现离线使用?
How web app can used offlinely base on Service Worker?
我知道有很多关于 Service Worker 的文档,也有很多问题已经问过了。
但是今天对我来说是漫长的一天,所以我现在读了很多文档很累。
我只是想解释一下我对Service Worker的看法,它是如何帮助我们离线服务web应用的,希望大家能告诉我是否正确。
我所知道的关于 Service Worker 的一切都是 拦截 浏览器的网络请求作业,并做一些事情。所以我猜当它拦截时,它会缓存每个请求。因此,当网络未连接时,Service Worker 使用它缓存的数据为用户提供服务
感谢大家的回复,
是的,你的想法是对的。在这里,我将提供有关整个功能的更多详细信息。
一个 service worker (SW),就像一个 web worker,运行在与主 web 应用程序使用的线程不同的线程上。这允许 SW 保持 运行 即使网络应用程序未打开,例如允许接收和显示网络通知。
与 Web Worker 不同的 SW 用于一般用途,专门用作我们的 Web 应用程序和网络之间的 代理。然而,由我们来定义和实现 SW 必须在本地缓存数据的内容和方式,否则,默认情况下,SW 不知道要在缓存中存储什么。
为此,我们必须实施针对静态资产(例如 .js 或 .css 文件)甚至 URL(但保留在请注意,SW 使用的 CACHE API 只能缓存 GET 调用,不能缓存 PUT/POST)。
一旦我们感兴趣的资产或 URL 在特定策略的范围内定义,SW 将拦截所有传出请求并查看是否匹配并最终从本地缓存提供数据,而不是通过网络。
当然这取决于我们chose/implement的策略。
由于请求的数据已经在本地可用,即使用户离线,软件也可以提供。
有兴趣的,I wrote an article, describing in detail the service workers和一些最常用的缓存策略,应用于不同的场景。
我知道有很多关于 Service Worker 的文档,也有很多问题已经问过了。
但是今天对我来说是漫长的一天,所以我现在读了很多文档很累。
我只是想解释一下我对Service Worker的看法,它是如何帮助我们离线服务web应用的,希望大家能告诉我是否正确。
我所知道的关于 Service Worker 的一切都是 拦截 浏览器的网络请求作业,并做一些事情。所以我猜当它拦截时,它会缓存每个请求。因此,当网络未连接时,Service Worker 使用它缓存的数据为用户提供服务
感谢大家的回复,
是的,你的想法是对的。在这里,我将提供有关整个功能的更多详细信息。
一个 service worker (SW),就像一个 web worker,运行在与主 web 应用程序使用的线程不同的线程上。这允许 SW 保持 运行 即使网络应用程序未打开,例如允许接收和显示网络通知。
与 Web Worker 不同的 SW 用于一般用途,专门用作我们的 Web 应用程序和网络之间的 代理。然而,由我们来定义和实现 SW 必须在本地缓存数据的内容和方式,否则,默认情况下,SW 不知道要在缓存中存储什么。
为此,我们必须实施针对静态资产(例如 .js 或 .css 文件)甚至 URL(但保留在请注意,SW 使用的 CACHE API 只能缓存 GET 调用,不能缓存 PUT/POST)。 一旦我们感兴趣的资产或 URL 在特定策略的范围内定义,SW 将拦截所有传出请求并查看是否匹配并最终从本地缓存提供数据,而不是通过网络。
当然这取决于我们chose/implement的策略。
由于请求的数据已经在本地可用,即使用户离线,软件也可以提供。
有兴趣的,I wrote an article, describing in detail the service workers和一些最常用的缓存策略,应用于不同的场景。