остановить кеширование через сервис-воркер, динамически загружающий файл 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")