2017-12-07 35 views
8

から特定のパスを除外するためにはどうすれば(docsから取られた)ngsw-config.jsonを持っている:私のサイトで角度5とサービス労働者:ngsw-config.json

{ 
    "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 appを読み込まずに新しいブラウザタブで開く必要があります。要求が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/**" 
     ] 
    } 
    }] 
} 
+0

だから、あなたは何をロードしてはならないいくつかの他の場所ではありませんあなたの角度のアプリやサービスワーカーから任意のURLやページビューを指すルート '/ API/rss'を使いたいですそのURL –

+0

@PannaDasから、角度アプリケーションはこのURLを提供すべきではありません。 – ktretyak

答えて

4

感謝Pedro Arantesadviceに、私は次の作業設定に達しました(dataGroups a ND "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/**" 
     ] 
     } 
    } 
    ] 
} 
+0

私がDatagroupsに入れたものはすべて無視されているようです。 dist(ng build --prod)で生成されたngsw.jsonファイルにdatagroupがありません。 この設定で使用しているのですか、それとも別の方法で動作していますか? – switch

+0

これはGET要求に対してのみ機能します。 SWのためにファイルの進行状況バーが機能しないときに問題が発生しています。 ここで提案されている解決策は、https://github.com/angular/angular/issues/21191#issuecomment-360051276でした.Angularがネイティブサポートを追加するまで – doron

0

このことができます場合は私に知らせてください:

{ 
    "exclude": [ 
    "test.ts", 
    "**/*.spec.ts" 
    ] 
    } 
+4

ようこそStackOverflowへ!あなたが貢献してくれることは素晴らしいことです。通常、私たちは、あなたの答えが適切な答えである理由について少し説明してください。 – Trent

4

​​ファイルはは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は、このパスを除外する必要があります。

nags-configuration.jsonファイルからパスを除外するには、単にこのパスパターンに!文字を追加します。

+1

これは私がやろうとした最初のことです(このように(https://angular.io/guide/service-worker-configref#reference-configuration-file))、動作しません。 – ktretyak

+0

'!api/rss'や'!/ api/rss/** 'のような追加の変種を試したことがありますか? – Trent

4

既にデータグループを作成しようとしましたか? dataGroupsは、資産(ファイル)に対してassetGroupsなどのデータ要求に使用されます。

データグループ

は、資産資源とは異なり、データ要求はアプリと一緒に をバージョン管理されていません。これらは、手動で設定された ポリシーに従ってキャッシュされ、APIリクエストや その他のデータの依存関係などの場合に便利です。

データグループインターフェイス:

export interface DataGroup { 
    name: string; 
    urls: string[]; 
    version?: number; 
    cacheConfig: { 
    maxSize: number; 
    maxAge: string; 
    timeout?: string; 
    strategy?: 'freshness' | 'performance'; 
    }; 
} 

あなたは"!/api/rss"が動作しない場合、あなたはurls": ["/api/user", "/api/admin"]で他のすべてのAPIを追加することができます(/api/rssを除くデータグループを作成することができます:

{ 
    "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"; 
    } 
    }] 
} 
関連する問題