微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular 缓存加载过时的 index.html 文件

如何解决Angular 缓存加载过时的 index.html 文件

我的应用程序加载后运行流畅。但是,一段时间后我第一次尝试加载应用程序时,我得到了一个白页。控制台显示错误Failed to load resource: the server responded with a status of 404 () main.hash2.js:1

(hashX 将被替换为常规哈希)

当我在服务器上查看时,主文件名为 main.hash3.js,这就解释了请求失败的原因(main.hash2.js 是应用程序之前版本的主文件名称)。我的问题是:为什么我的应用尝试获取过时的主文件而不是新的主文件

我的 ngsw.json 看起来像这样:

{
    "configVersion": 1,"index": "/index.html","assetGroups": [
      {
        "name": "app","installMode": "prefetch","updateMode": "prefetch","urls": [
          "/favicon.ico","/index.html"
        ],"patterns": []
      },{
        "name": "assets","installMode": "lazy","urls": [
          "/assets/android-chrome-192x192.png","/assets/apple-touch-icon.png","..."
        ],"patterns": []
      }
    ],"dataGroups": [],"hashTable": {
      "/favicon.ico": "zerzeraezrazerazerz","/index.html": "sqdfdezqreqqefrdddwfsfzqeff","...": "..."
    },"navigationUrls": [
      {
        "positive": true,"regex": "^\\/.*$"
      },{
        "positive": false,"regex": "^\\/(?:.+\\/)?[^/]*\\.[^/]*$"
      },"regex": "^\\/(?:.+\\/)?[^/]*__[^/]*$"
      },"regex": "^\\/(?:.+\\/)?[^/]*__[^/]*\\/.*$"
      }
    ]
  }

this tutorial来看,我认为配置

我尝试将“资产”组中的“懒惰”模式更改为“预取”,然后将我的 dist 文件夹推送到类似 prod 的环境中。但是当我尝试在 Firefox 上加载我的页面时,我再次收到错误消息。当我比较浏览器和服务器上的 index.html 文件时,它们是不同的。

我不明白如何确保我的浏览器每次都加载最新版本。

解决方法

1.import serverice worker 并在发生变化时强制重新加载站点

2.app.component.ts

import { SwUpdate } from '@angular/service-worker';

constructor(
    updates: SwUpdate
  ) {
   
    if (updates.isEnabled) {
      updates.available.subscribe(() => {
        if (confirm('New version available. Load New Version?')) {
          window.location.reload();
        }
      });
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。