2012-09-18 4 views
2

유지 관리하는 앱에 오프라인 캐싱을 추가하려고합니다. 먼저 AppCache를 사용해야 만 처음으로 작은 데모 사이트로 테스트 해보기로했습니다. 지금까지 제대로 작동하지 않는 오프라인 부분을 얻을 수 없었습니다. Firefox에서는 날짜가 올바르게 업데이트되지만, 스크립트에서 no-cache 헤더를 모두 보내고 있어도 Chrome에서 index.php가 인쇄 된 것처럼 보입니다. (네트워크 어댑터를 비활성화하여) 오프라인 상태가되면 콘솔에 다음 오류가 표시 되더라도 Chrome은 매니페스트에서 지정한대로 offline.html 대신 캐시 된 index.php를 계속 표시합니다.HTML5 AppCache가 제대로 작동하지 않습니다.

응용 프로그램 캐시 오류 이벤트는 (-1) http://html5test.g1testserver/manifest.appcache

파이어 폭스는 단순히 '연결할 수 없음'대화 상자가 표시됩니다 불러오는 데에 실패 매니페스트. 사이트 레이아웃과 파일 내용은 모두 아래에 나열되어 있습니다.

사이트 레이아웃 :

/root/ 
- manifest.appcache 
- index.php 
- offline.html 
- .htaccess 

manifest.appcache :

CACHE MANIFEST 
# version 3 

CACHE: 
offline.html 

NETWORK: 
index.php 

FALLBACK: 
/offline.html 

의 index.php :

<?php 
    header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); 
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
    header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); 
    header("Cache-Control: post-check=0, pre-check=0", false); 
    header("Pragma: no-cache"); 
echo '<!DOCTYPE html> 
<html manifest="/manifest.appcache"> 
<head> 
    <title>HTML5 Test</title> 
    <meta http-equiv="CACHE-CONTROL" content="NO-CACHE" /> 
</head> 
<body> 

<h1>This is index.php: '.date('d/m/Y H:i:s').'</h1> 
</body> 
</html> 
'; 
?> 

offline.html :

<!DOCTYPE html> 
<html manifest="/manifest.appcache"> 
<head> 
</head> 
<body> 
    <h1>This will be served in place of index.php</h1> 
</body> 
</html> 

htaccess로는 :

AddType text/cache-manifest .appcache 
+0

내가 대체는 호출되는 생각 앱 캐시를 사용하는 방법에 대한 몇 가지 좋은 정보가 -가 대체에 대한 매우 유용한 섹션입니다. Chrome의 리소스/애플리케이션 캐시에는 무엇이 있습니까? – JonWells

+0

@CrimsonChin : – hellsgate

+0

에 index.html, index.php 및 manifest.appcache가 나열되어 있습니다. 태그에서 매니페스트 특성을 제거한 경우 index.php를 캐시하지 않으려면 "브라우저가 페이지를 캐시하면 페이지를 캐시하지 않습니다 (명시 적으로 매니페스트 파일 자체에 명시되어 있지 않으면 매니페스트 특성을 포함하지 않습니다.) 브라우저는 여전히 매니페스트의 다른 모든 항목을 캐시합니다. – JonWells

답변

2

당신은 <html> 태그 내부 매니페스트를 포함 할 필요가 없습니다. 이것은 페이지로 캐시하고자 할 때만 필요합니다. doctype에 매니페스트를 포함하지 않는다고해서 .appcache가 호출되거나 업데이트되지 않는다는 의미는 아닙니다.

그래서 index.php가 오프라인 일 때 offline.html을 fallback으로 실행하려면 index.php를 캐시에 저장하지 마십시오. 캐시가 실패 http://www.html5rocks.com/en/tutorials/appcache/beginner/ 경우

HTML5ROCKS는 here

관련 문제