1

웹 사이트에서 사용되는 모든 HTML, CSS, JavaScript 및 이미지 파일에서 ApplicationCache 매니페스트 파일을 자동으로 생성하는 방법을 찾으려고합니다.웹 사이트에로드 된 파일을 모두 찾아서 ApplicationCache 매니페스트를 만듭니다.

웹 사이트의 오프라인 사용을 지원해야하기 때문에이 정보가 필요합니다. 좀 더 정확하게는, JavaScript 용 ArcGIS API webapp의 오프라인 사용법.

iOS 지원은 중요한 요구 사항이며 서비스 작업자는 모든 브라우저에서 iOS에서 전혀 지원되지 않기 때문에 ApplicationCache 대신 서비스 작업자를 사용하지 않습니다.

아이디어는 사이트가 완전히로드 된 후 함수를 호출하여 새 매니페스트에 사용할 텍스트를 동적으로 만듭니다. 그런 다음 수동으로 매니페스트 파일에 복사/붙여 넣기하십시오. 사이트의 내용이 변경되고 매니페스트 파일을 업데이트해야하는 경우에만 수행 할 수 있습니다. http://westciv.com/tools/manifestR/ 하지만 두 가지 문제가 있습니다 :

이 도구, ManifestR은 매우 가까운

1가 제대로 CSS 파일에있는 이미지 파일의 URL을 처리하지 않습니다. 예를 들어 url (../ images/myimage.png)을 발견하면 www.mysite.com/과 같이 비표준 링크를 추가하는 대신 매니페스트 파일에 상대 링크 ../images/myimage.png를 직접 추가합니다. images/myimage.png.

2 dojo.require (AMD 모듈)를 통해로드 된 스크립트를 나열하지 않습니다.

비슷한 코드를 사용하여 이러한 문제를 해결하고 파일 목록을 컴파일 할 생각입니다. 이미 # 1을 수정하는 방법을 알고 있지만 # 2를 수정하는 방법을 알 수는 없습니다.

JavaScript를 사용하면로드 된 물마루 태그 (window.scripts 개체에 있음)뿐만 아니라 AMD 모듈을 사용하여로드 한 태그도 웹 사이트에서 사용하는 모든 스크립트 URL 목록을 찾을 수 있습니까?

기본적으로 Chrome이 소스 창에서 웹 사이트에 대해 나를 보여주는 것과 동일한 목록을 컴파일하고 싶습니다.

예 :이 어디서나 사용할 수없는 경우, 어쩌면 내가 그 AMD를 통해로드 된 모든 파일의 트랙을 유지 dojo.require하기 위해 프록시 기능을 만들 수 있다고 생각하고

enter image description here

.

하지만 먼저 여기에서 질문하고 싶습니다. 이미이 작업을 수행하는 스크립트 도구를 놓친 것일까 요? 아니면 내 계획이 좋지 않을까?

덕분에

+0

로드 된 모듈이 모두 필요하다는 것을 알게되었습니다.모듈 – greenkarmic

+0

더 나은, 나는 자원 타이밍 API를 통해로드 된 모든 자원의 목록을 얻을 수있는 것으로 나타났습니다. 먼저 performance.setResourceTimingBufferSize (some_value)로 버퍼 크기를 설정하십시오. 그런 다음 window.performance.getEntriesByType ('resource')을 사용하여 파일 목록을 가져옵니다. 훨씬 더 간단합니다. – greenkarmic

답변

1

나는 자바 스크립트 응용 프로그램에 대한의 ArcGIS API에 대한 ApplicationCache을 사용한 적이 없으니까,하지만 난 당신이 첫 번째로 코드를 번들하기 위해 a custom Dojo build of your application을 제공 이상의 층을 구축하는 것이 좋습니다 것입니다. Dojo 빌드를 올바르게 구성한 경우 (작은 장점 없음) 필요한 정확한 스크립트를 알아야합니다.

또한, 일단 스크립트 목록을 얻는 방법을 알아 내면 Dojo AMD 로더가 캐시 된 파일을 사용할 수 있도록 특별한 고려 사항이있을 수 있습니다. 참조 : dojo and the offline application cache

행운을 빈다.

+1

예. 동료도 동일한 제안을하고, 사용자 정의 번들을 만들고, 전체 모듈 목록 및 해당 종속 항목 대신 응용 프로그램 캐시에 캐시합니다. 나중에 그것을 생각하고 있지만 지금 당장 Resource Timing API에서 얻은 파일의 전체 목록과 함께 작동하므로 필요하지 않습니다. 그것은 작동하고 다른 오프라인 문제 (예 : 일부 서버 요청 응답을 시뮬레이션하고지도 타일을 캐싱)를 처리해야합니다. ApplicationCache에서 모듈을로드하는 방법은 아무 것도하지 않았습니다. 브라우저가 오프라인 일 때 캐시에서 가져 오는 것을 이미 알고 있습니다. 감사! – greenkarmic