Angular PWA - 缓存远程图像
Angular PWA - caching remote image(s)
我正在尝试使用 Angular 7 PWA 应用程序(通过 ng add @angular/pwa
创建)来缓存图像。除了图像,一切都完美无缺。这是 ngsw-config.json
文件的样子(至少是相应的部分):
{
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
],
"urls": [
"https://fonts.googleapis.com/**",
"https://fonts.gstatic.com/**",
"https://res.cloudinary.com/**"
]
}
}
奇怪的是,当我使用 DevTools 查看缓存时,我看到了其中的图像(以及字体)。但是当我使应用程序脱机时,只有图像不起作用 - 它们基本上返回 504 错误:
Error: Response not Ok (fetchAndCacheOnce): request for https://res.cloudinary.com/[removed]/image/upload/[removed].png returned response 504 Gateway Timeout
(我删除了部分URL)
字体,但是 return 和 HTTP 200
(来自 Service Worker)。
我对此感到很困惑,为什么不在离线模式下提供图像?我在这里遗漏了什么吗?
我想通了 - 事实证明,当使用带有 f_auto
标志的 Cloudinary 图像时,Cloudinary returns a Vary
HTTP header,这会导致一些问题。目前我还没有找到通过 ngsw
为缓存 API 设置 ingoreVary
选项的方法。更多信息在这里:https://github.com/angular/angular/issues/28443#issuecomment-490765336
我正在尝试使用 Angular 7 PWA 应用程序(通过 ng add @angular/pwa
创建)来缓存图像。除了图像,一切都完美无缺。这是 ngsw-config.json
文件的样子(至少是相应的部分):
{
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
],
"urls": [
"https://fonts.googleapis.com/**",
"https://fonts.gstatic.com/**",
"https://res.cloudinary.com/**"
]
}
}
奇怪的是,当我使用 DevTools 查看缓存时,我看到了其中的图像(以及字体)。但是当我使应用程序脱机时,只有图像不起作用 - 它们基本上返回 504 错误:
Error: Response not Ok (fetchAndCacheOnce): request for https://res.cloudinary.com/[removed]/image/upload/[removed].png returned response 504 Gateway Timeout
(我删除了部分URL)
字体,但是 return 和 HTTP 200
(来自 Service Worker)。
我对此感到很困惑,为什么不在离线模式下提供图像?我在这里遗漏了什么吗?
我想通了 - 事实证明,当使用带有 f_auto
标志的 Cloudinary 图像时,Cloudinary returns a Vary
HTTP header,这会导致一些问题。目前我还没有找到通过 ngsw
为缓存 API 设置 ingoreVary
选项的方法。更多信息在这里:https://github.com/angular/angular/issues/28443#issuecomment-490765336