2017-12-24 27 views
0

정책 토큰을 URL 매개 변수로 사용하는 보안 CDN에서 자산을 캐시하고 싶습니다. 예 : www.cdn.com/image.png?Policy=AAAAA&Key-Pair-Id=BBBBB 사이트를 다시 방문하면 다른 정책 토큰 및 키 쌍이 ID가 있어도 캐시에서 자산을 가져 오려고합니다. 예를 들어 :workbox 3 - 런타임 캐싱에서 URL 매개 변수 무시

나는 서비스 작업자에이 코드를 사용하는 경우 www.cdn.com/image.png?Policy=CCCCC&Key-Pair-Id=DDDDD가 :

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

그것은 캐시에 응답을 발견하고 네트워크로 이동하지 않습니다. URL Params없이 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

나는 사용자 정의 핸들러를 사용하여 이것에 대한 해결책을 발견