强制 Angular Service Worker 忽略外部图像

Force Angular Service Worker to Ignore External Images

我目前正处于使用 Angular 的 Service Worker 包创建 PWA 的最后阶段。我正在建设的网站目前有一个主页,其中包含来自外部 API(例如:http://blah.com/v2/{{id}}/icon.png)的 50 个动态模板图像。当前的 service worker 设置缓存这些图像并用完浏览器存储。这些图像每天都在变化,因此缓存它们并没有什么好处,而且有 50 张,所以它在浏览器中占用了很多 space。有没有办法防止缓存来自外部源的图像?

以下是我的 ngsw-config.json 文件的当前设置:

{
    "$schema": "./node_modules/@angular/service-worker/config/schema.json",
    "index": "/index.html",
    "dataGroups": [
        {
            "name": "api",
            "urls": ["/api", "/v2"],
            "cacheConfig": {
                "maxAge": "0u",
                "maxSize": 0,
                "strategy": "freshness"
            }
        }
    ],
    "assetGroups": [
        {
            "name": "app",
            "installMode": "prefetch",
            "resources": {
                "files": [
                    "/favicon.ico",
                    "/index.html",
                    "/manifest.webmanifest",
                    "/*.css",
                    "/*.js"
                ]
            }
        },
        {
            "name": "assets",
            "installMode": "lazy",
            "updateMode": "prefetch",
            "resources": {
                "files": [
                    "/assets/**",
                    "/*.(eot|svg|cur|webp|gif|otf|ttf|woff|woff2|ani)"
                ],
                "urls": [
                    "https://fonts.googleapis.com/**",
                    "https://fonts.gstatic.com/**"
                ]
            }
        }
    ]
}

dataGroups 部分中的随机 /v2/ 是我修复此问题的多次失败尝试中的最后一次。

我什至从 assetGroups 部分删除了所有图像文件结尾,但这也不起作用。

dataGroups 是我们不想缓存(版本化)的请求,而 assetGroups 是我们想要缓存(版本化)的请求。

使用以下配置:-

"dataGroups": [
        {
            "name": "api",
            "urls": ["/api"],
            "cacheConfig": {
                "maxAge": "0u",
                "maxSize": 0,
                "strategy": "freshness"
            }
        },
        {
                "name": "mycrapyimages",
                "urls": ["http://blah.com/v2"],
                "cacheConfig": {
                    "maxAge": "1u",
                    "maxSize": 1,
                    "strategy": "freshness"
                }
         }
        ],

assetGroups 部分删除所有图像文件结尾绝对不是解决方案。我们可能会将它们排除在测试目的之外,但让它们用于生产构建。

注意:-我故意将 maxAge 和 maxSize 保持为 1 ,您可以在测试时设置为 0。