2017-12-24 38 views
0

ポリシートークンをURLパラメータとして使用するセキュアなCDNからアセットをキャッシュします。例えば のようなサイトにアクセスした場合、別のポリシートークンとKey-Pair-Idを持っていてもキャッシュからアセットを取得したいと考えています。例えば :私はサービスワーカーにこのコードを使用する場合www.cdn.com/image.png?Policy=CCCCC&Key-Pair-Id=DDDDDworkbox 3 - 実行時キャッシュのURLパラメータを無視する

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

これは、キャッシュ内の応答を見つけ、ネットワークに行くことはありません。 URLのパラメータがないURL(Policy = CCCCC &のKey-Pair-Id = DDDDDが実際には有効なポリシーではない場合でも)と一致させたい。 www.cdn.com/image.pngが存在するかどうかを調べて、それを取得してください。

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; 
       }); 
      }); 
     }); 
    } 
); 

答えて

1

私はカスタムハンドラを使用して、このための解決策を見つけました
関連する問題