我应该在React生产中使用registerServiceWorker吗?

时间:2018-07-31 08:43:55

标签: reactjs service-worker create-react-app production

当您使用create-react-app引导React应用程序时,会有一个名为registerServiceWorker.js的文件被导入并在index.js中用作:

import React from 'react'
import ReactDOM from 'react-dom'
import App from 'App'
import registerServiceWorker from 'registerServiceWorker'

ReactDOM.render(<App />, document.getElementById('root'))
registerServiceWorker()

官方的create-react-app文档建议保留该服务人员进行生产,并说:

  

默认情况下,它还包括服务人员,以便您的应用在以后访问时从本地缓存加载。

An stackoverflow question也表示相同。

但是随后有this medium article表示不使用默认配置:

  

关闭服务人员

     

如果您使用过诸如create-react-app之类的程序来引导您的项目,那么如果您没有专门将其集成到应用程序中,则需要关闭内置服务程序。尽管通常无害,但它可能会引起一些问题,因此最好先将其消除

由于我无法配置服务工作者(React的新手),是否应该在生产环境中使用registerServiceWorker

如果我的React应用程序是基于交互式身份验证的应用程序(某种程度上使它在离线状态下无用),我是否需要它?

1 个答案:

答案 0 :(得分:0)

registerServiceWorker 是一个 JavaScript 文件,用于缓存应用程序的某些资产。这不仅可以创建离线可用性,还可以提高站点的性能。我不确定如果您将其保留(可能没有)会出现什么问题,但如果您的网站如此复杂,您可能需要考虑创建自定义 Service Worker。

所以不,如果您的应用离线无用,则 registerServiceWorker 不是必需的,尽管它会影响性能。无论如何,我的建议是注册一个响应代码(除非它已经返回 503)并放置某种登陆页面,告诉用户他们需要互联网连接(如果您还没有的话)。