하나의 웹 응용 프로그램을 제공하는 루트 '/'에서 호스팅되는 serviceWorker가 있습니다. '/ otherapp'에는 다른 신청서가 있습니다. 내가 겪고있는 문제는 serviceWorker가 '/ otherapp'로가는 트래픽을 가로채는 것입니다. serviceWorker.register의 'scope'매개 변수의 기본값은 './'이지만 서비스 설계자에게 '/ otherapp'에 대한 요청을 무시하고 다른 모든 정보를 잡을 수있는 방법을 찾고 있습니다. 내가 생각할 수있는 유일한 방법은 정규 표현식의 일부 유형을 사용하는 것이지만, 이것을하는 사람들에게 어떤 문서 나 주제가 보이지 않습니다. 어떤 아이디어?서비스 작업자의 경우 serviceWorker.register 'scope'필드에 정규 표현식을 사용할 수 있습니까?
0
A
답변
0
서비스 작업자 범위에서 정규 표현식을 지정할 수 없습니다.
당신이 할 수있는 일은 fetch 이벤트 핸들러에 정규식을 적용하여 캐시되는 항목, 캐시되는 기간 등을 제어하는 것입니다. 여기서는 모든 종류의 제어 권한을 얻습니다.
제 조언은 이벤트 핸들러의 로직을 리팩터링하는 것입니다. 코드 및 로직을 좀 더 쉽게 관리 할 수 있도록 도와 줄 수 있습니다.
하나 이상의 정규 표현식을 기반으로 다른 경로를 기반으로 다른 캐싱 전략을 만들 수 있습니다.
이런 식으로 생각하면 서비스 직원은 브라우저의 미니 웹 서버와 같습니다. 노드 익스프레스, ASP.NET MVC 또는 Ruby on Rails와 같은 것을 디자인하는 것과 마찬가지로 적절한 응답을 검색하기 위해 라우트 핸들러를 사용해야합니다. 당신은 당신의 서비스 노동자에게 똑같은 일을해야합니다.
여기 정규 표현식이 도움이 될지 잘 모르겠습니다. 이것은 하위 범위를 무시할 수 있는지 여부에 대한 질문으로 보입니다. 대답은 '아니오'입니다. '/ otherapp'에서 나오는'FetchEvent'를 무시할 수는 있지만 수동으로해야합니다. 요청 개체의 리퍼러를 사용할 수도 있고, 이벤트 개체에 대한 클라이언트 식별 값을 [clients.get'] (https://developer.mozilla.org/en-US/docs/Web/API/Clients)와 함께 사용할 수도 있습니다. /도망). –