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

时间:2017-12-25 13:52:39

标签: reactjs express socket.io service-worker

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

user首次打开网络应用时,他会看到login表单,在login之后,服务器会检索所有users的列表,将其发送到client。当有人撰写新的message时,server会将message发送给所有clients

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

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

据我所知,服务工作者擅长存储imagescssjs个文件,它可以帮助用户在app时使用search_fields没有互联网连接。

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

2 个答案:

答案 0 :(得分:1)

你有一个很好的问题。

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

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

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

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

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

答案 1 :(得分:1)

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

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

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

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