如何清除所有客户端中的角度服务工作线程缓存?

发布于 2025-01-10 02:15:30 字数 1122 浏览 3 评论 0原文

首先检查了所有 stackoverflow Q/A 并没有找到我的答案。

我有 Angular 13 项目,它总是在生产构建中使用服务工作者(ngsw.json + ngsw-worker.js)。后来,后端 api URL 在environment.ts 文件中更改为不同的 URL,并且在部署到 Amazon S3 cloudfront 后,前端仍然调用旧端点。

好吧,看来我的服务工作人员缓存了所有文件并且没有更新。我尝试通过 swUpdate 更新它,但它没有帮助,因为它看不到任何更改,所以我只是删除了 serviceWorker :

angular.json :

"serviceWorker": false,

index.html :

 <script>
    if ('serviceWorker' in navigator) {
      navigator.serviceWorker.getRegistrations().then(function (registrations) {
        //returns installed service workers
        if (registrations.length) {
          for(let registration of registrations) {
            registration.unregister();
            document.location.reload();
        }
     }
  });
}
  </script>

Ran : npm run prerender

将 dist/browser 部署到 Amazon S3 Cloudfront,它没有任何 Service Worker 文件,并且它应该删除所有客户端浏览器中任何使用的 Service Worker + 重新加载页面。这些都没有发生。

如果客户端没有打开开发工具,旧的 Service Worker 仍然会提供旧的 api url。

如何重置我所有客户端中的所有缓存和 Service Worker ?

First of all checked all stackoverflow Q/A and haven't found my answer.

I have Angular 13 project which always used service worker (ngsw.json + ngsw-worker.js) in production build. Later the back-end api url was changed to different one in environment.ts files and after deploy to Amazon S3 cloudfront the Front-end is still calling the the old endpoint.

Okey, so it seems that my service worker cached all files and isn't updating. I have tried updating it via swUpdate, but it just don't help because it can't see any changes so I just deleted serviceWorker :

angular.json :

"serviceWorker": false,

index.html :

 <script>
    if ('serviceWorker' in navigator) {
      navigator.serviceWorker.getRegistrations().then(function (registrations) {
        //returns installed service workers
        if (registrations.length) {
          for(let registration of registrations) {
            registration.unregister();
            document.location.reload();
        }
     }
  });
}
  </script>

Ran : npm run prerender

Deployed dist/browser to Amazon S3 Cloudfront which don't have any service worker file and It should delete any used service worker in all client browsers + reload the page. Noone of this is happening.

If client is not opening dev tools , old service worker is still giving an old api url.

How to reset all cache and service worker in all my clients ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文