2017-12-07 135 views
8

gelen belirli bir yolunu nasıl dışlanır: Benim sitemdeAçısal 5 ve Hizmet İşçi: I (<a href="https://angular.io/guide/service-worker-getting-started#step-4-create-the-configuration-file-ngsw-configjson" rel="nofollow noreferrer">docs</a> alınan) <code>ngsw-config.json</code> sahip 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 beslemesi /api/rss bir bağlantı vardır Açısal uygulama yüklenmeden yeni bir tarayıcı sekmesinde açılmalıdır. İstekleri index.html'a yönlendirilen kaynakların listesinden nasıl hariç tutabilirim?

UPD: Denedim ama şu yapılandırma çalışmıyor (!/api/rss bakınız):

{ 
    "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

Yani hiçbir şey yüklemek olmamalıdır başka bir yerde değil açısal uygulaması ve hizmet işçisi herhangi bir URL veya sayfa görüntüleme işaret rotayı '/ api/rss' kullanmak istiyorum Bu URL'den –

+0

@ PannaDas, Açısal uygulama bu URL'yi sunmamalıdır. – ktretyak

cevap

4

Teşekkür Pedro Arantesadvice, sonraki çalışma yapılandırmasına ulaştım (bkz. dataGroups a nd "maxAge": "0u"): Yanlış değilsem

{ 
    "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'a koyduğum her şey göz ardı ediliyor gibi görünüyor. Veri grubunu (ng build --prod ile) ngsw.json dosyasında oluşturmuyorum. Bu yapılandırmada var mı yoksa başka bir şekilde mi çalışıyor? – switch

+0

Bu, yalnızca GET isteklerine çalışır. Bir dosya ilerleme çubuğu SW nedeniyle çalışmadığında bir sorun yaşıyoruz. Burada önerilmiş olan çözümü yaptık: https://github.com/angular/angular/issues/21191#issuecomment-360051276 Angular, bunun için yerel destek ekleyene kadar – doron

0

bu yardımcı olur bana bildirin:

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

StackOverflow'a Hoş Geldiniz! Katkıda bulunduğunuzu görmek çok güzel. Genellikle, cevabınızın neden uygun cevap olduğunu açıklamanızı rica ediyoruz. – Trent

4

ngsw-configuration.json dosya glob biçimi için kullandığı desen eşleme yolları. Burada önemli olan

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. 

bir yol dışlamak için kullanılabilir ! önek vardır. Örneğin, !/api/rss numaralı bir glob paterni bu yolu hariç tutmalıdır.

nags-configuration.json dosyanızdaki bir yolu dışlamak için, bu yol desenine ! karakterini ekleyin.

+1

Yapmaya çalıştığım ilk şey bu (bu gibi) (https://angular.io/guide/service-worker-configref#reference-configuration-file)), ancak işe yaramıyor. – ktretyak

+0

"api/rss" veya "!/Api/rss/**" gibi ek varyantlar denediniz mi? – Trent

4

Zaten veri grupları oluşturmayı denediniz mi? dataGroups, varlıklara (dosya olan) assetGroups gibi veri isteğinde kullanılır.

Veri Grupları

varlık kaynaklarının aksine, veri talebinde uygulamasıyla birlikte sürüm değildir. API istekleri ve diğer veri bağımlılıkları gibi durumlar için daha kullanışlı olan el ile yapılandırılmış ilkelerine göre önbelleğe alınırlar.

Veri Grubu arayüzü:

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

Sen (/api/rss dışlayan bir veri grubu oluşturabilirsiniz "!/api/rss" işe yaramazsa, sen urls": ["/api/user", "/api/admin"] tüm başkalarına API'leri ekleyebilirsiniz:

{ 
    "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"; 
    } 
    }] 
} 
İlgili konular