2010-12-29 3 views
7

매니페스트 파일과 함께 오프라인 캐싱을 사용하는 HTML5 앱이 있습니다. 캐시 업데이트를 트리거하는 유일한 방법은 서버의 매니페스트 파일을 변경하는 것입니다. 캐시를 만료시키고 업데이트를 수행하는 프로그래밍 방식을 찾고 있습니다.HTML5 오프라인 캐시 프로그래밍 만료

캐시를 만료하기 위해 window.applicationCache에서 몇 가지 방법을 찾고 스펙을 살펴 보았습니다. 그러나 아무 것도 찾지 못했습니다. update() 메소드가 있지만 캐시가 만료 된 경우 (즉, 매니페스트 파일이 변경된 경우)에만 업데이트됩니다. 그래서 도움이되지 않습니다.

누구든지 응용 프로그램 캐시가 만료되고 다운로드가 강제되는 프로그래밍 방식을 알고 있습니까?

+0

* 서버 쪽 * 프로그램 방식은 이전 매니페스트 파일에 대해 '404'를 서버하는 것입니다. 이전 버전의 매니페스트가 만료 될 수 있도록 버전 문자열이 포함 된 매니페스트 파일 이름을 사용해야합니다. – meagar

답변

2

AFAIK, manifest은 업데이트를 시작하는 유일한 방법입니다. HTML5 Rocks 웹 사이트에는 상태 (appCache.status)를 청취 한 후 즉시 applicationCache.swapCache()을 호출하여 프로그래밍 방식으로 캐시를 업데이트하는 방법 (manifest 업데이트 이후)에 대한 글이 있습니다.

은 그게 충분 있는지 확실하지 않습니다,하지만 좋은 읽기 ("캐시 업데이트"를 아래로 스크롤) - http://www.html5rocks.com/tutorials/appcache/beginner/

2

그것은 업데이트가 만 "업데이트"매니페스트에 의해 트리거되는 것은 사실이다 파일. 그러나 일부 브라우저 (FF, chrome)는 매니페스트 파일에서 참조하는 모든 파일을 검사하지 않습니다. 예를 들어 jpg 's는 서버가 최신 버전인지 테스트하지 않습니다. 브라우저의 일반적인 캐싱 정책이 업데이트 프로세스에 영향을 미치는 것으로 보입니다. 브라우저가 캐시 매니페스트에있는 파일의 전부 또는 일부를 확인하도록하려면 HTTP 헤더에 "Cache-Control : no-cache"라는 파일을 태그로 지정해야합니다.

쿠키를 사용하여 업데이트 작업을 제어 할 수 있습니다. 쿠키 명령을 해석하는 서버 측 스크립트가 있으면 자바 스크립트를 통해 브라우저에서 오래된 캐시 내용을 강제로 사용할 수 있습니다. 예를 들어, 클라이언트가 "cache_clear"쿠키가있는 cache.update()를 수행하면 서버가 응답 코드 404로 응답하여 브라우저가 응용 프로그램 캐시 내용을 폐기하게됩니다.