остановить кеширование через сервис-воркер, динамически загружающий файл javascript в angular

Я пытаюсь остановить кеширование (сервисный работник) динамически загружаемого файла JS, и я не смог это сделать. Когда я перезагружал страницу, она загружала повторяющиеся файлы js. Может ли кто-нибудь помочь мне в этом вопросе. Спасибо.

ngsw-congif.json Это файл конфигурации, в котором я пытаюсь ограничить кеширование файлов index.html и .js. ставлю! символ на каждом ресурсе, чтобы ограничить кеширование файлов. проверить в "assetGroups"

      {
  "$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"
        ]
      }
    },
    {
      "name": "assets",
      "installMode": "lazy",
      "updateMode": "prefetch",
      "resources": {
        "files": [
          "/assets/**",
          "/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
        ],
        "urls": [
          "https://fonts.googleapis.com/icon?family=Material+Icons"
        ]
      }
    }
  ]
}

service.ts

Это сервис, в котором у меня есть код для динамической загрузки файлов js с помощью документа и скрипта.

      import { DOCUMENT } from '@angular/common';
private loadScript(url: string): Observable<any> {
    if (this._loadedLibraries[url]) {
      return this._loadedLibraries[url].asObservable();
    }

    this._loadedLibraries[url] = new ReplaySubject();

    const script = this.document.createElement('script');
    script.type = 'text/javascript';
    //script.async = true;
    script.src = url;

    if (script.readyState) {  //IE
      script.onreadystatechange = () => {
        if (script.readyState === "loaded" || script.readyState === "complete") {
          script.onreadystatechange = null;
        }
      };
    } else {
      script.onload = () => {
        this._loadedLibraries[url].next("loaded  script");
        this._loadedLibraries[url].complete();
      };
    }
    script.onerror = (error: any) => {
      this._loadedLibraries[url].next("error loading  script");
      console.log(this.LOG_PREFIX +"error loading  script: ", error);
    };

    //this.document.body.appendChild(script);
    document.getElementsByTagName('head')[0].appendChild(script);

    return this._loadedLibraries[url].asObservable();
  }

component.ts

Здесь передается файл js для динамической загрузки приложения

      this.loadScript("https://test/javascript.js")

0 ответов

Другие вопросы по тегам