angular приложение с сервис-работником (pwa) не работает должным образом - PullRequest
1 голос
/ 24 марта 2020

Работа в автономном режиме angular с работниками сферы обслуживания получает ссылку от https://angular.io/guide/service-worker-config

Приложение работает нормально в автономном режиме, единственная проблема связана с механизмом обновления кэша, если я использую "installMode": "prefetch" Приложение работает нормально в автономном режиме, но файлы в кеше никогда не обновляются при обновлении файлов на сервере. Если я использую "installMode": "ленивое" `приложение не работает в автономном режиме.

ниже - ngsw-config.json моего приложения.

{
  "$schema": "./node_modules/@angular/service-worker/config/schema.json",
  "index": "/index.html",
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/favicon.ico",
          "/index.html",
          "/*.css",
          "/*.js",
          "/*.manifest",
           "/assets/**"
        ]
      }
    } 
  ]
}

также пытается updateMode, но все еще кешируется файлы не обновляются при изменениях

  "installMode": "prefetch",
  "updateMode": "prefetch",

1 Ответ

0 голосов
/ 27 марта 2020

Использование lazy для index.html и других небольших файлов обычно не требуется, так как эти файлы очень легкие. Я бы порекомендовал разделить ресурсы и другие тяжелые файлы в отдельную группу в конфигурационном файле работника сервиса и использовать lazy только для них:

  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/favicon.ico",
          "/index.html",
          "/*.css",
          "/*.js"
        ]
      }
    },
    {
      "name": "app2",
      "installMode": "lazy",
      "resources": {
        "files": [
           "/assets/**"
        ]
      }
    }
  ]
}

Затем посмотрите на папку dist после создания приложения. , В нем будет файл конфигурации рабочего сервиса, созданный на основе правил, которые вы написали в ngsw-config.json (он будет содержать список всех кэшированных файлов с ключами ha sh). Попробуйте исключить этот файл из кэша, добавив пояснительный знак в начале:

  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "!/some-file-not-to-cache.js"
        ]
      }
    },
...