2017-12-13 2 views
2

나는 내부 서비스 작업자 와 각도 5.1 사용이 내 ngsw-config.json 파일입니다각도 서비스 노동자가 시작 너무 늦게

{ 
    "appData": "Angular 5.1", 
    "index": "/index.html", 
    "assetGroups": [ 
    { 
     "name": "app", 
     "installMode": "prefetch", 
     "resources": { 
     "files": ["/favicon.ico", "/index.html"], 
     "versionedFiles": ["/*.bundle.css", "/*.bundle.js", "/*.chunk.js"] 
     } 
    }, 
    { 
     "name": "assets", 
     "installMode": "prefetch", 
     "updateMode": "prefetch", 
     "resources": { 
     "files": ["/assets/**"] 
     } 
    } 
    ], 
    "dataGroups": [ 
    { 
     "name": "tasks-users-api", 
     "urls": ["/api"], 
     "cacheConfig": { 
     "strategy": "freshness", 
     "maxSize": 20, 
     "maxAge": "1h", 
     "timeout": "5s" 
     } 
    } 
    ] 
} 

내 홈페이지 ngOnInit 기능, 나는 나열된/API URL을 호출 데이터 그룹에 내 콘솔을 열면이 URL은 서비스 작업자가 시작하기 전에 전화 (아래 빨간색으로 표시됨)라는 것을 알 수 있습니다 (서비스 근로자의 시작이 파란색으로 표시된 프레임과 일치 함). 내 인터넷 연결을 전환하는 경우

dev console screen

따라서는/API 호출은 서비스 노동자에 의해 처리되지 않습니다. 연결을 해제하기 전에 다른 페이지로 이동하여 홈페이지로 돌아 오는 경우/api 호출은 서비스 담당자가 처리합니다.

이 문제가 있습니까? 사건을 어떻게 처리할까요?

답변

1

이것은 사실보다 더 많은 버그입니다. Service Worker의 설계 목표 중 하나는 매우 유연하기 때문에 SW 설치시기와 설치에 필요한 사항을 자유롭게 결정할 수 있습니다.

설치가 이론적으로 스크립트가 수행하는 첫 번째 작업으로 호출 될 수 있으며 설치가 완료 될 때까지 차단 될 수 있습니다. 그러나 설치 단계가 임의로 길어질 수 있으므로 (인터넷의 절반을 사전 캐싱하려고 시도 할 수도 있음) 매우 비실용적입니다.

각도 구현의 구체적인 내용을 모르지만 일반적으로 페이지로드가 완료된 후에 만 ​​SW 등록을 호출합니다. 따라서 첫 번째로드 (또는 SW가 설치되고 활성화 될 때까지 적어도 단계)는 SW에 의해 제공되지 않을 것으로 예상됩니다.

이 케이스 처리 방법은 무엇입니까? 처리 할 수있는 것이 없습니다. 첫 번째로드에서 연결이 끊어지면 누가 담당했는지에 관계없이 손실됩니다. 사용자가 직접 데이터를로드 할 수 없거나 SW가 데이터를 캐시 할 수 없었습니다. 두 경우 모두 기본적으로 제공 할 항목이 없습니다.

관련 문제