【问题标题】:Do I need a service worker when my application often communicates with the server?当我的应用程序经常与服务器通信时,我是否需要 service worker?
【发布时间】:2018-06-06 17:53:13
【问题描述】:

我正在开发一个使用以下框架和库的简单聊天应用程序:reactsocket.ioexpress

user 第一次打开 Web 应用程序时,他看到了一个login 表单,在login 之后,服务器检索所有users 的列表并将其发送到client。当有人写一个新的message 时,server 会将message 发送给所有clients

如您所见,应用程序的每个部分都依赖于服务器。

使用 Service Worker 有意义吗?可以吗?

据我所知,Service Worker 擅长存储imagescssjs 文件,它可以帮助用户在没有互联网连接的情况下使用app

但我不知道什么时候一切都取决于服务器可以做什么。

【问题讨论】:

    标签: reactjs express socket.io service-worker


    【解决方案1】:

    你有一个很好的问题。

    您当然可以使用 Service Worker,但很可能无法达到某些其他应用程序可以使用的程度。您自己已经概述了问题:您的网站依赖于服务器,因此无法使其脱机左右。其他一些网站可以离线或大部分离线,在没有网络连接的情况下显示一些内容,并在连接恢复时提供完整的体验,但您的网站听起来并非如此。

    根据您给出的描述,您仍然可以轻松地使用 Service Worker。您已经正确理解,SW 非常擅长存储(缓存)静态资产,并在没有任何网络连接的情况下从设备的缓存中提供它们。您可以使用此功能并使您的网站更快。您可以使用 SW 主动缓存站点的所有静态资产,并让 SW 从 本地缓存 中返回它们,而无需从网络请求任何内容。这将使您的站点更快一点或更快,具体取决于用户的连接(如果用户的 3G 连接速度较慢,那么 SW 将使站点超快;如果用户有稳定的光纤或诸如此类的东西,那么差异将不要那么大)。

    您还可以让您的网站在没有任何互联网连接的情况下离线使用。在这种情况下,您当然会向用户显示一条消息,说“嘿,您好像离线了!开枪!您需要连接才能使用该应用程序。我们会在收到信息后立即继续!”因为这可能会使用户体验更好。

    因此,总而言之:您可以利用 SW 加快网站的初始加载速度,但您很可能不会像其他网站那样从 SW 配置中获得那么多。

    如果您有任何其他问题或想澄清一些问题,请发表评论:)

    【讨论】:

      【解决方案2】:

      当然,您可以从拥有 Service Worker 中受益,它的通用性足以拥有适用于各种应用程序的应用程序,我不同意它只对静态资产有好处。

      显然,这完全取决于您的应用程序的实际要求。但从技术上讲,没有任何限制可以阻止您在 Service Worker 中缓存您的 users 响应。

      请记住,“离线”是一种在多种情况下都会发生的情况 - 不仅是远离网络覆盖范围,还包括中断、干扰、谎言或通过隧道。因此,它也可能在您的应用运行期间间歇性发生,因此做好准备可能是有意义的。

      例如,您可以将离线消息存储在IndexedDB 中,对于在此期间发送的消息,注册Background Sync event 以便在连接恢复时将其发送到服务器。这样,用户可能仍然能够以有限的方式使用该应用程序(阅读之前交换的消息并发布他们自己的消息以便稍后发送)。

      【讨论】:

        猜你喜欢
        • 2015-06-14
        • 1970-01-01
        • 2018-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多