私はngsw-config.json
を持っています( 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/**"
]
}
}]
}
私のサイトには、RSSフィード/api/rss
へのリンクがあり、Angularアプリをロードせずに新しいブラウザータブで開く必要があります。要求はindex.html
にリダイレクトされますか?
[〜#〜] upd [〜#〜]:次の設定を試しましたが、動作しませんでした(!/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/**"
]
}
}]
}
Pedro Arantesadvice のおかげで、次の動作する設定に到達しました(dataGroups
および"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/**"
]
}
}
]
}
すでにデータグループを作成しようとしましたか? dataGroups
は、アセット(ファイル)へのassetGroups
などのデータ要求に使用されます。
データグループ
資産リソースとは異なり、データ要求はアプリとともにバージョン管理されません。 APIリクエストやその他のデータ依存性などの状況により役立つ手動設定のポリシーに従ってキャッシュされます。
データグループインターフェース:
export interface DataGroup {
name: string;
urls: string[];
version?: number;
cacheConfig: {
maxSize: number;
maxAge: string;
timeout?: string;
strategy?: 'freshness' | 'performance';
};
}
/api/rss
を除外するデータグループを作成できます("!/api/rss"
が機能しない場合は、urls": ["/api/user", "/api/admin"]
に他のすべてのAPIを追加できます。
{
"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";
}
}]
}
ngsw-configuration.json
ファイルは、パターンマッチングパスにglob形式を使用します。
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.
ここで重要なのは、パスを除外するために使用できる!
プレフィックスです。たとえば、!/api/rss
のglobパターンはこのパスを除外する必要があります。
Nags-configuration.jsonファイルからパスを除外するには、このパスパターンに
!
文字を単に追加します。
Ngsw-config.jsonファイル内
{
"index": "/index.html",
"dataGroups":
[
{
"name": "api",
"urls": ["!/**/*profileimageupload*"],
"cacheConfig": {
"maxSize": 0,
"maxAge": "0u",
"strategy": "freshness"
}
}
]
}
例えば。 APIが https://api.example.com/profileimageupload/ の場合、Service/APIから最後のセグメントを追加します
profileimageuploadを追加します。サービスワーカーからの呼び出しを除外(削除)したいので、追加しました!/ ** /yourService/Api姓、