3

我用 angular 创建了一个示例项目 aspnet.core 2.1 webapplication 并添加了 pwang add @angular/pwa

然后创建了一个带有两个控制器的小应用程序进行测试。

现在,如果我在 spaextension 中使用 Angular 客户端运行应用程序,则 serviceworker 已注册并正在运行,但根本不会缓存资产或数据组。客户端是使用开发服务器生成的--prodspaExtension但不会启动开发服务器,它会从“dist”文件夹加载文件。

如果我使用两个主机(后端localhost:5555, Angular Client localhost:5556)托管客户端和后端,它会按预期工作,应用程序、图像、字体并按api配置缓存。

    services.AddSpaStaticFiles(configuration =>
    {
        configuration.RootPath = "ClientApp/dist";
    });

    app.UseSpa(spa =>
    {
        // To learn more about options for serving an Angular SPA from ASP.NET Core,
        // see https://go.microsoft.com/fwlink/?linkid=864501

        spa.Options.SourcePath = "ClientApp";

        //if (env.IsDevelopment())
        //{
        //    spa.UseAngularCliServer(npmScript: "start");
        //}
    });

我不知道为什么当客户端在同一主机上运行时它不起作用,但如果单独托管却可以工作。API 路由可能是错误的,但我尝试了所有可能的方法。资产没有路线,因此无论如何它应该可以工作。

在这里ngsw-config,但由于它在单独托管时有效,我认为问题不在这里。

{
  "index": "/index.html",
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/favicon.ico",
          "/index.html",
          "/*.css",
          "/*.js"
        ]
      }
    }, {
      "name": "assets",
      "installMode": "lazy",
      "updateMode": "prefetch",
      "resources": {
        "files": [
          "/assets/**",
          "/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
        ]
      }
    }, {
      "name": "fonts",
      "resources": {
        "urls": [
          "https://fonts.googleapis.com/**",
          "https://fonts.gstatic.com/**"
        ]
      }
    }
  ],
  "dataGroups": [
    {
      "name": "api-freshness",
      "urls": [
        "https://localhost:5001/api/news"
      ],
      "cacheConfig": {
        "maxSize": 100,
        "maxAge": "3d",
        "timeout": "1m",
        "strategy": "freshness"
      }
    },
    {
      "name": "api-performance",
      "urls": [
        "https://localhost:5001/api/list"
      ],
      "cacheConfig": {
        "maxSize": 100,
        "maxAge": "10d",
        "timeout": "10s",
        "strategy": "performance"
      }
    }
  ]
}
4

0 回答 0