当前位置: 首页 > 知识库问答 >
问题:

从CRA切换到下一个JS时服务人员出现问题

常朗
2023-03-14

因此,我们最近将登录页从CreateReact应用程序更改为使用Next。js。我们的旧createreact应用程序在用户浏览器上注册了一个基本的默认服务工作人员。

每当我换到下一个新的。js网站,我们意识到以前去过那里的用户会继续得到旧网站糟糕的缓存版本。

我发现已经有一些讨论讨论了这个问题,但这两种解决方案似乎都不适合我。这两个讨论是:

>

  • 在从React切换到Next之后,由于service worker的缓存,网站未刷新。js。如何强制更新?

    https://www.asapdevelopers.com/service-worker-issue-nextjs-framework/

    这两种html" target="_blank">解决方案本质上都包括向下一个项目添加一个新的服务工作者文件,并使用一些代码删除现有的服务工作者。这个代码看起来像

    if ("serviceWorker" in navigator) {
      window.addEventListener("load", function () {
        navigator.serviceWorker.getRegistrations().then((registrations) => {
          console.log("--");
          for (let registration of registrations) {
            registration.unregister().then((bool) => {
              console.log("unregister: ", bool);
            });
          }
          if (registrations.length) {
            window.location.reload();
          }
        });
      });
    }
    

    所以我试过这个。我以前的服务人员是通过routeOUR\u URL/service worker上的一个文件获得服务的。js。我在下一个项目中添加了一个公共目录,并在我的项目中添加了一个具有相同名称和上述代码的文件。然后我在我的\u文档中链接了这个文件。js,并可以确认它是否运行,以及我是否能够在下一次访问中找到它。js网站。新文件和旧文件的URL相同。但不幸的是,问题似乎依然存在。

    在上面链接的另一篇文章中,还提到将此文件放在下一个项目的根目录中。这对我来说没有多大意义,因为我知道它当时并没有以任何方式被送达,但我也给了它一次机会,仍然没有运气。

    有人知道我可能做错了什么,或者我能做些什么来解决这个问题吗?本质上,我们只是想强制删除任何和所有旧的服务人员,以便我们的新网站正确加载。

  • 共有1个答案

    沈鸿光
    2023-03-14

    服务人员(至少一般)是通过网站本身注册的,浏览器不会自动找到(至少还没有)。

    此代码(注销该域的所有服务工作人员)应该包含从下一个发送的任何代码。js到浏览器(例如index.js)。如果你把这个放在你的主页上,所有用户都应该解决这个问题。如果您有理由怀疑(基于流量数据)用户已将其他页面标记为书签,您可能希望将其包含在通用捆绑包或页脚中。

     类似资料:
    • 我创建了react应用程序,它使用股票服务人员缓存文件。我希望该应用程序是一个可下载的PWA,但每当我更新(与heroku) 我是否错过了文档中的一些配置,以便在其为PWA时启用自动更新?或者我可以做些什么来在更新时强制刷新。(我读过这是一个糟糕的UI,但我对此没有意见) 注意:从PC上的浏览器查看时,它会按预期工作。(选项卡全部关闭时更新)

    • 我在这个链接的页面中实现的service worker演示有一些问题。我试着为这个演示尽可能地减少代码,但是粘贴到这里太长了。 一个问题是,当页面完全加载时,我转到Chrome devtools的“应用程序”选项卡,我在缓存中看到了很多内容: 不清楚为什么有这么多缓存...可能是我正在加载的字体,但仍然...似乎很大。 更令人担忧的是,当我单击该部分中的按钮(所有选项均已打勾)时,饼图中红色的部分

    • 创建响应应用时,默认情况下会调用Service Worker。为什么使用服务工人?默认调用的原因是什么?

    • 我有一个用于缓存图像的服务人员,这个服务人员只在前端模板中注册,但它仍会不断扩展到我的管理模板中。 这导致我的表单在验证令牌受到影响时表现得不可预测。 用一些安慰。日志我认为安装事件是在进入请求页面之前触发的,但我无法确定当前/下一个URL。 如何防止服务人员扩散到管理面板并干扰页面?我只想缓存资产。 就相关而言,这是我的服务人员:

    • 尝试从同一命名空间中的另一个服务连接到一个服务。使用ClusterIP创建服务。创建服务后使用该Ip访问服务。请求有时成功,有时失败,我看到两个pod都启动并运行。以下是服务配置

    • 反应器具有运算符,它镜像一系列发布者,每当新的发布者可用时取消先前的订阅: 对于我的用例,我需要一个关于此主题的变体,在订阅下一个发布服务器之前,我不会取消第一个发布服务器,而是继续镜像发布服务器1的序列,直到发布服务器2发出其第一个项目,然后才进行切换,正如这张大理石图(对于后来发现这个问题的人来说,这不是Reactor文件中现有操作员的图,这是我自己刚刚画的): 我理解,在一般情况下,这可能涉