当我的应用程序经常与服务器通信时,我是否需要服务工作者?

问题描述 投票:0回答:2

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

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

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

使用服务工作者是否有意义?它可以吗?

据我所知,服务工作者善于存储imagescssjs文件,它可以帮助用户在没有互联网连接的情况下使用app

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

reactjs express socket.io service-worker
2个回答
1
投票

你有一个很好的问题。

您当然可以使用服务工作者,但很可能不会达到某些其他应用程序可以使用它的程度。您自己概述了问题:您的网站依赖于服务器,因此无法使其脱机。其他一些网站可以脱机或者可以大部分离线显示一些没有网络连接的内容,并在连接回来时提供完整的体验,但这听起来不像是你的网站。

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

您还可以在没有任何互联网连接的情况下使您的网站脱机。在那种情况下,你当然会向用户显示一条消息,说“嘿,好像你已经离线了!拍!你需要连接才能使用这个应用程序。一旦我们得到了一些信息,我们就会继续!”因为这可能会使用户体验更好。

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

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


1
投票

当然,您可以从拥有服务工作者中受益,它具有足够的通用性,可以为各种应用程序提供应用程序,我不同意它只适用于静态资产。

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

请记住,“离线”是在多种情况下发生的情况 - 不仅远离网络覆盖范围,还包括中断,干扰,谎言或通过隧道。因此,它可以在您的应用程序操作期间间歇性地发生,并且准备它可能是有意义的。

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

© www.soinside.com 2019 - 2024. All rights reserved.