2017-10-20 4 views
0

하나의 웹 응용 프로그램을 제공하는 루트 '/'에서 호스팅되는 serviceWorker가 있습니다. '/ otherapp'에는 다른 신청서가 있습니다. 내가 겪고있는 문제는 serviceWorker가 '/ otherapp'로가는 트래픽을 가로채는 것입니다. serviceWorker.register의 'scope'매개 변수의 기본값은 './'이지만 서비스 설계자에게 '/ otherapp'에 대한 요청을 무시하고 다른 모든 정보를 잡을 수있는 방법을 찾고 있습니다. 내가 생각할 수있는 유일한 방법은 정규 표현식의 일부 유형을 사용하는 것이지만, 이것을하는 사람들에게 어떤 문서 나 주제가 보이지 않습니다. 어떤 아이디어?서비스 작업자의 경우 serviceWorker.register 'scope'필드에 정규 표현식을 사용할 수 있습니까?

+1

여기 정규 표현식이 도움이 될지 잘 모르겠습니다. 이것은 하위 범위를 무시할 수 있는지 여부에 대한 질문으로 보입니다. 대답은 '아니오'입니다. '/ otherapp'에서 나오는'FetchEvent'를 무시할 수는 있지만 수동으로해야합니다. 요청 개체의 리퍼러를 사용할 수도 있고, 이벤트 개체에 대한 클라이언트 식별 값을 [clients.get'] (https://developer.mozilla.org/en-US/docs/Web/API/Clients)와 함께 사용할 수도 있습니다. /도망). –

답변

0

서비스 작업자 범위에서 정규 표현식을 지정할 수 없습니다.

당신이 할 수있는 일은 fetch 이벤트 핸들러에 정규식을 적용하여 캐시되는 항목, 캐시되는 기간 등을 제어하는 ​​것입니다. 여기서는 모든 종류의 제어 권한을 얻습니다.

제 조언은 이벤트 핸들러의 로직을 리팩터링하는 것입니다. 코드 및 로직을 좀 더 쉽게 관리 할 수 ​​있도록 도와 줄 수 있습니다.

하나 이상의 정규 표현식을 기반으로 다른 경로를 기반으로 다른 캐싱 전략을 만들 수 있습니다.

이런 식으로 생각하면 서비스 직원은 브라우저의 미니 웹 서버와 같습니다. 노드 익스프레스, ASP.NET MVC 또는 Ruby on Rails와 같은 것을 디자인하는 것과 마찬가지로 적절한 응답을 검색하기 위해 라우트 핸들러를 사용해야합니다. 당신은 당신의 서비스 노동자에게 똑같은 일을해야합니다.