我用 angular 创建了一个示例项目 aspnet.core 2.1 webapplication 并添加了 pwang add @angular/pwa
然后创建了一个带有两个控制器的小应用程序进行测试。
现在,如果我在 spaextension 中使用 Angular 客户端运行应用程序,则 serviceworker 已注册并正在运行,但根本不会缓存资产或数据组。客户端是使用开发服务器生成的--prod
,spaExtension
但不会启动开发服务器,它会从“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"
}
}
]
}