2012-08-24 4 views
14

캐시 매니페스트 파일을 가지고 놀고 있었는데 선언 된 페이지를 캐싱하지 못하게하려고했습니다. HTML5 RocksHTML5 오프라인 매니페스트 캐싱 중지 페이지 선언 됨

사용자가 탐색 모든 페이지에서

매니페스트가 암시 적으로 응용 프로그램 캐시

에이스에 추가됩니다 포함 그것. 매니페스트 파일에서 특정 아티팩트를 캐싱하고 싶습니다. 그 중 하나는 내 온라인 단일 페이지 앱 HTML의 오프라인 버전이지만 온라인 버전은 캐시하지 않습니다.

+0

아직 HTML5에 익숙하지 않지만 매니페스트를 포함하여 페이지를 캐싱하지 못하도록 잘 정의 된 방법이 없다는 것에 놀랐습니다. –

+0

그래, 나도 그래. 매니 페스트 파일이 더 많은 영향력을 가지므로 선언 한 내용 만 캐시에 저장하면 선호했을 것입니다. 페이지와 연결되어서는 안됩니다. 그것은 단순히 숨겨진 기능입니다. – Greg

+0

첫 번째 생각은 "네트워크에 추가 : 섹션"이었지만 일부 테스트 후에는 작동하지 않습니다 (IE에서는 적어도 작동하지 않을 때 한 번만 테스트를 중단했습니다). 그게 내 생각에 명백히 틀린거야. 명시 적으로 선언 된 것은 항상 기본 동작을 무시해야한다는 것이다. 이와 같은 문제로 인해 오프라인 자료를 사용하는 것에 대해서는 여전히 잠정적입니다. – Morvael

답변

17

이렇게하면 문제가 해결됩니다. mydomain.com/로 이동 내 매니페스트 파일

CACHE MANIFEST 
# Version 0.1 

CACHE: 
# Minimised Styles 
/css/style.0.1.min.css 

# Minimised JavaScript 
/js/script.0.1.min.js 

FALLBACK: 
//offline.html 

NETWORK: 
* 

참고 모든 오프라인 이제 방법은 것만 캐시 (캐시) /offline.html 이제

에 갈 때 매니페스트 파일에 온라인 페이지를 포함하지 않고 mydomain.com/.

mydomain.com/

<iframe src="/offline.html" style="display: none;"></iframe> 

에서 페이지의 맨 아래에 다음과 같은 iframe을 넣어 offline.html에 manifest="myapp.appcache"을 넣어.

즉, mydomain.com/이로드되면 해당 페이지에 매니페스트 특성이 없으므로 캐싱되지 않습니다. 그런 다음 브라우저가 iframe을 통해 offline.html을 가져오고 HTML 속성이있어 offline.html 페이지를 포함하여 매니페스트 파일의 지침을 사용하여 캐싱을 원하는 모든 항목을 추가합니다.

내가 볼 수있는 유일한 오버 헤드는 첫 번째 페이지로드시 iframe에서 추가 HTTP 요청을하게되지만 일단 캐싱되면 캐시에서 가져 오므로 큰 문제는 아닙니다.

+0

이것은 Chrome에서 작동하는 것으로 보입니다.하지만 FireFox v14.0.1에서 작동하지 않는 것 같습니다. Maintain.htm 파일 (매니페스트 특성이 없지만 매니페스트가있는 offline.htm 파일이있는 iframe이 있음)에 대한 네트워크에서 모든 것을 계속 가져옵니다. – patorjk

+0

나를 위해 일하는 것 같습니다 ... – Greg

+0

FF 15로 업그레이드 한 후 저를 위해 일하기 시작했습니다. 설정에 문제가 있는지는 확실하지 않지만 이제는 제대로 작동합니다. – patorjk