【问题标题】:Reactjs service worker in a Web ApplicationWeb 应用程序中的 Reactjs 服务工作者
【发布时间】:2018-06-27 17:08:24
【问题描述】:

我是网络应用程序开发的新手,所以请原谅我的问题。

我刚刚注意到,我使用 create-react-app 创建的 Web 应用程序安装了服务工作者,将其上传到我的服务器,当我从本地 Chrome 浏览器打开新应用程序后,它不会在构建后重新加载,即使我多次在服务器上重新加载节点,并硬重新加载 Chrome 浏览器。

我从我的应用中删除了 service worker,现在 Chrome 总是会得到新的应用。

如何“强制” Service Worker 在我的应用程序中自我更新,以便每次将新构建应用程序推送到我的服务器时总能得到它?

如果我必须添加这个Cache-Control: no-cache 或其他缓存机制https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control 那么Service Worker 有什么用呢?

【问题讨论】:

    标签: reactjs browser service-worker


    【解决方案1】:

    如果处于开发模式,理想的解决方案是不允许安装 Service Worker。对于您的开发工作流程,您总是希望您的新代码没有缓存服务工作者的副作用。您可以通过执行以下操作来做到这一点 -

    if ( process.env.NODE_ENV === "PRODUCTION") {
      // service worker init code
    }
    

    还要确保为您各自的 prod 和 dev 脚本设置 NODE_ENV=PRODUCTION 或 NODE_ENV=DEVELOPMENT。

    希望这会有所帮助! ?

    更新

    几个项目可以帮助您完成 sw 生命周期 -

    1. sw-toolbox
    2. offline-plugin

    【讨论】:

    • 是的,我就是这么做的。对不起,也许我的解释不清楚。当我构建并将其部署到我的生产服务器互联网时,它仍然显示过时的应用程序。这就是为什么我必须从我的代码中删除 service worker 以便它显示最新的应用程序。
    • 嘿Eko!请在 SO-stackoverflow.com/questions/33262385/… 上查看此答案。我想这就是你要找的。​​span>
    • 谢谢,它没有回答我的问题,但消除了我对如何以最佳实践使用 Service Worker 的困惑。
    猜你喜欢
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多