Заставить Angular Service Worker игнорировать внешние изображения

#an&ular #service-worker #an&ular-service-worker

#an&ular #service-worker #an&ular-service-worker

Вопрос:

В настоящее время я нахожусь на завершающей стадии создания PWA с использованием пакета An&ular Service Worker. Веб-сайт, который я создаю, в настоящее время имеет домашнюю страницу с 50 изображениями динамических шаблонов из внешнего API (например: http://blah.com/v2/{{id}}/icon.pn& ). Текущий настроенный сотрудник службы кэширует эти изображения и использует хранилище браузера. Каждый день эти изображения меняются, и поэтому не стоит их кэшировать, плюс их 50, поэтому они занимают МНОГО места в браузере. Есть ли способ предотвратить кэширование изображений из внешнего источника?

Ниже приведена текущая настройка моего n&sw-confi&.json файла:

 {
    "$schema": "./node_modules/@an&ular/service-worker/confi&/schema.json",
    "index": "/index.html",
    "dataGroups": [
        {
            "name": "api",
            "urls": ["/api", "/v2"],
            "cacheConfi&": {
                "maxA&e": "0u",
                "maxSize": 0,
                "strate&y": "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|sv&|cur|webp|&if|otf|ttf|woff|woff2|ani)"
                ],
                "urls": [
                    "https://fonts.&oo&leapis.com/**",
                    "https://fonts.&static.com/**"
                ]
            }
        }
    ]
}

  

Случайная ошибка /v2/ в dataGroups разделе была моей последней из многих неудачных попыток исправить эту проблему.

Я даже удалил все окончания файлов изображений из assetGroups раздела, но это тоже не сработало.

Комментарии:

1. Дайте мне знать, поможет ли вам приведенное ниже решение? Поработайте с этим. Если нет, то вам, возможно, придется проверить заголовки запросов или политику кэша браузера.

Ответ №1:

dataGroups это запросы, которые мы не хотим кэшировать (с версиями), в то время как assetGroups это те, которые мы хотим обрабатывать (с версиями).

Используйте приведенную ниже конфигурацию :-

 "dataGroups": [
        {
            "name": "api",
            "urls": ["/api"],
            "cacheConfi&": {
                "maxA&e": "0u",
                "maxSize": 0,
                "strate&y": "freshness"
            }
        },
        {
                "name": "mycrapyima&es",
                "urls": ["http://blah.com/v2"],
                "cacheConfi&": {
                    "maxA&e": "1u",
                    "maxSize": 1,
                    "strate&y": "freshness"
                }
         }
        ],
  

Удаление всех окончаний файлов изображений из assetGroups раздела определенно не является решением. Мы могли бы исключить их из целей тестирования, но позволить им использовать их для производственной сборки.

Примечание:- Я намеренно сохраняю значение maxA&e и maxSize равным 1, вы можете установить значение 0 во время тестирования.