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

带有服务工作者(pwa)的angular应用程序未按预期工作

闻人宜
2023-03-14

与服务人员一起进行脱机工作,从https://angular.io/guide/service-worker-config

应用程序脱机工作正常唯一的问题是,如果我使用“installMode”:“prefetch”应用程序脱机工作正常,但缓存中的文件在服务器上的文件更新时从不更新。如果我使用“installMode”:“lazy”`应用程序无法脱机工作。

以下是ngsw配置。我的应用程序的json

{
  "$schema": "./node_modules/@angular/service-worker/config/schema.json",
  "index": "/index.html",
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/favicon.ico",
          "/index.html",
          "/*.css",
          "/*.js",
          "/*.manifest",
           "/assets/**"
        ]
      }
    } 
  ]
}

还尝试了updateMode,但仍然缓存未在更改时更新的文件

  "installMode": "prefetch",
  "updateMode": "prefetch",

共有1个答案

诸葛乐逸
2023-03-14

通常不需要为index.html和其他小文件使用,因为这些文件重量非常轻。我建议将资产和其他重文件拆分到一个单独的组中的Service Worker配置文件和使用只为他们:

  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/favicon.ico",
          "/index.html",
          "/*.css",
          "/*.js"
        ]
      }
    },
    {
      "name": "app2",
      "installMode": "lazy",
      "resources": {
        "files": [
           "/assets/**"
        ]
      }
    }
  ]
}

然后在构建应用后查看dist文件夹。它将有一个基于您在ngsw-config.json中编写的规则创建的Service Worker配置文件(它将保存带有散列键的所有缓存文件的列表)。尝试从缓存中排除该文件,在开始处添加解释标记:

  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "!/some-file-not-to-cache.js"
        ]
      }
    },
 类似资料:
  • 我正在使用spring Roo并希望访问Controller类中的一个bean,该类在ApplicationContext.xml中具有以下配置: 配置类本身是: 在我的Controller中,我认为一个简单的Autowired注释应该可以完成这项工作 在启动过程中,spring在setSkipWeeks方法中打印消息。不幸的是,每当我在控制器中调用config.getSkipWeeks()时,它

  • 当我运行以下程序时,它只打印 然而,从Java 8的equalsIgnoreCase文档中我们发现: 如果以下至少一项为真,则两个字符c1和c2被视为相同的忽略情况: •对每个字符应用java.lang.character.ToUpperCase(char)方法会产生相同的结果 所以我的问题是为什么这个程序不打印 在这两种操作中,都使用了大写字符。

  • 我试图使用来传输我根据前面的问题设置的自定义标头。 我在文件中读到... 我的属性包括:

  • 我正在和selenium一起工作,刮一些数据。 有一个按钮在页面上,我正在点击说“Custom_Cols”。这个按钮为我打开了一个窗口,我可以在那里选择我的列。 我的问题是为什么新窗口上的元素不可见,即使我正在等待元素的可见。补充一下,我已经尝试增加延迟时间,但我还是会偶尔出现这个错误。 我的密码在这里

  • 我正在使用请求有效负载中的对象数组调用API,我在@Request estBody中添加了@有效注释以检查是否有任何空属性在我的有效负载中发送。我希望我正在发送的任何空数据都应该抛出错误。但我的代码没有抛出错误 下面是我的实体课 这是我的控制器类 验证依赖项 我的请求有效负载 当我发送上述有效负载时,我希望抛出一个错误,因为我没有发送不为null的性别,但spring没有抛出任何错误。 我是否错过