2017-12-24 6 views
0

Ich möchte Assets von einem sicheren CDN zwischenspeichern, das Richtlinientoken als URL-Parameter verwendet. zum Beispiel: www.cdn.com/image.png?Policy=AAAAA&Key-Pair-Id=BBBBB und wenn ich die Seite erneut besuche, möchte ich das Asset aus dem Cache bekommen, auch wenn ich ein anderes Policy Token und Key-Pair-Id habe. zum Beispiel: www.cdn.com/image.png?Policy=CCCCC&Key-Pair-Id=DDDDDWorkbox 3 - URL-Parameter beim Laufzeit-Caching ignorieren

Wenn ich diesen Code in dem Servicemitarbeiter verwenden:

workbox.routing.registerRoute(
    /^(http(s)?:)?\/\/www\.cdn\.com.*/, 
    workbox.strategies.staleWhileRevalidate() 
); 

Es und an das Netzwerk geht die Antwort nicht in der Cache finden. Ich möchte, dass es durch die URL ohne URL-Parameter übereinstimmt (auch wenn Policy = CCCCC & Key-Pair-Id = DDDDD ist nicht wirklich eine gültige Richtlinie). schau einfach wenn www.cdn.com/image.png existiert und es abruft.

Antwort

1

fand ich eine Lösung für diese durch einen benutzerdefinierten Handler verwenden:

workbox.routing.registerRoute(
    /^(http(s)?:)?\/\/www\.cdn\.com.*/, 
    ({url, event}) => { 
     return caches.open(`${prefix}-${runtime}-${suffix}`).then((cache) => { 
      const customRequest = `${url.origin}${url.pathname}`; 
      return cache.match(customRequest).then((cacheRes) => { 
       if (cacheRes) { 
        return cacheRes; 
       } 
       return fetch(event.request).then((fetchRes) => { 
        cache.put(customRequest, fetchRes.clone()); 
        return fetchRes; 
       }); 
      }); 
     }); 
    } 
); 
Verwandte Themen