J'ai ngsw-config.json
(tiré du docs ):
{
"index": "/index.html",
"assetGroups": [{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html"
],
"versionedFiles": [
"/*.bundle.css",
"/*.bundle.js",
"/*.chunk.js"
]
}
}, {
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
]
}
}]
}
Sur mon site, il existe un lien vers le fil RSS /api/rss
, qui devrait s'ouvrir dans un nouvel onglet de navigateur sans charger l'application Angular. Comment puis-je l'exclure d'une liste de ressources dont la demande est redirigée vers index.html
?
UPD: J'ai essayé mais je n'ai pas utilisé la configuration suivante (voir !/api/rss
):
{
"index": "/index.html",
"assetGroups": [{
"name": "app",
"installMode": "prefetch",
"patterns": ["!/api/rss"],
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"!/api/rss"
],
"versionedFiles": [
"/*.bundle.css",
"/*.bundle.js",
"/*.chunk.js"
]
}
}, {
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
]
}
}]
}
Grâce au Pedro Arantesconseil , j’ai atteint la prochaine configuration opérationnelle (voir dataGroups
et "maxAge": "0u"
):
{
"index": "/index.html",
"dataGroups":
[
{
"name": "api",
"urls": ["/api"],
"cacheConfig": {
"maxSize": 0,
"maxAge": "0u",
"strategy": "freshness"
}
}
],
"assetGroups":
[
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html"
],
"versionedFiles": [
"/*.bundle.css",
"/*.bundle.js",
"/*.chunk.js"
]
}
},
{
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
]
}
}
]
}
Avez-vous déjà essayé de créer des groupes de données? dataGroups
sont utilisés pour les demandes de données telles que assetGroups
pour les actifs (qui sont des fichiers).
Groupes de données
Contrairement aux ressources des ressources, les demandes de données ne sont pas versionnées avec l'application. Ils sont mis en cache conformément à la configuration manuelle des stratégies plus utiles pour des situations telles que les demandes d'API et autres dépendances de données.
Interface du groupe de données:
export interface DataGroup {
name: string;
urls: string[];
version?: number;
cacheConfig: {
maxSize: number;
maxAge: string;
timeout?: string;
strategy?: 'freshness' | 'performance';
};
}
Vous pouvez créer un groupe de données qui exclut /api/rss
(si "!/api/rss"
ne fonctionne pas, vous pouvez ajouter toutes les autres API dans urls": ["/api/user", "/api/admin"]
:
{
"index": "/index.html",
"assetGroups": [{
"name": "assetGroup1",
...
}, {
"name": "assetGroup1",
...
}],
"dataGroups": [{
"name": "dataGroup1";
"urls": ["!/api/rss"];
cacheConfig: {
maxSize: 50;
maxAge: "3d12h";
}
}, {
"name": "dataGroup2";
"urls": ["/api/user"];
cacheConfig: {
maxSize: 40;
maxAge: "3d12h";
}
}]
}
Le fichier ngsw-configuration.json
utilise le format global pour les chemins de correspondance de modèle.
Patterns use a limited glob format:
** matches 0 or more path segments.
* matches exactly one path segment or filename segment.
The ! prefix marks the pattern as being negative, meaning that only files that don't match the pattern will be included.
Ce qui est important ici, c'est le préfixe !
, qui peut être utilisé pour exclure un chemin. Par exemple, un modèle global de !/api/rss
devrait exclure ce chemin.
Pour exclure un chemin de votre fichier nags-configuration.json, ajoutez simplement le caractère
!
à ce modèle de chemin.
Dans le fichier ngsw-config.json
{
"index": "/index.html",
"dataGroups":
[
{
"name": "api",
"urls": ["!/**/*profileimageupload*"],
"cacheConfig": {
"maxSize": 0,
"maxAge": "0u",
"strategy": "freshness"
}
}
]
}
par exemple. Si votre API ressemble à https://api.example.com/profileimageupload/ , ajoutez le dernier segment du service/API.
J'ajoute profileimageupload que je veux exclure (supprimer) en appelant le technicien de maintenance, c'est pourquoi j'ai ajouté!/**/votre nom de service/Api,