안녕하세요. 

하이브리드 앱 개발중에 성능을 좀 올리려고 앱캐쉬를 넣어서 테스트중입니다. 


각종 가이드 문서에 있는대로, (http://xguru.net/621 등 참고하여)

cache.man 파일을 만들어서 이미지파일을  CACHE: 항목에 넣었구요, 

man 파일의 mime-type 을 text/cache-manifest 로 설정해주었습니다. 


문제는 구글 크롬에서는 제대로 캐싱을 하는데, 단말로만 가면 에러 이벤트가 떨어진다는게 문제입니다. 


다음은 manifest  파일입니다.

 CACHE MANIFEST
# manifest version v0.1 

CACHE:
./programs.png
./video.png

NETWORK:
* 


요건 단말에서 webview 설정한거구요.


      getSettings().setAppCacheEnabled(true);
      getSettings().setDomStorageEnabled(true);
      getSettings().setPluginsEnabled(true);
      getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);


저 위에 setCacheMode 는 LOAD_NORMAL 로 해도, NO_CACHE  로 해도 결과는 다 똑같더군요. 


html 파일에서 이벤트 로그 출력은 

http://jonathanstark.com/blog/2009/09/27/debugging-html-5-offline-application-cache/

이 사이트 참조했습니다. 


var cacheStatusValues = [];
cacheStatusValues[0] = 'uncached';
cacheStatusValues[1] = 'idle';
cacheStatusValues[2] = 'checking';
cacheStatusValues[3] = 'downloading';
cacheStatusValues[4] = 'updateready';
cacheStatusValues[5] = 'obsolete';

var cache = window.applicationCache;
cache.addEventListener('cached', logEvent, false);
cache.addEventListener('checking', logEvent, false);
cache.addEventListener('downloading', logEvent, false);
cache.addEventListener('error', logEvent, false);
cache.addEventListener('noupdate', logEvent, false);
cache.addEventListener('obsolete', logEvent, false);
cache.addEventListener('progress', logEvent, false);
cache.addEventListener('updateready', logEvent, false);

function logEvent(e) {
    var online, status, type, message;
    online = (navigator.onLine) ? 'yes' : 'no';
    status = cacheStatusValues[cache.status];
    type = e.type;
    message = 'online: ' + online;
    message+= ', event: ' + type;
    message+= ', status: ' + status;
    if (type == 'error' && navigator.onLine) {
        message+= ' (prolly a syntax error in manifest)';
    }
    console.log(message);
}

window.applicationCache.addEventListener(
    'updateready',
    function(){
        window.applicationCache.swapCache();
        console.log('swap cache has been called');
    },
    false
);



마지막으로 단말에서 app cache 이벤트 로그입니다. 

[cache Resource] app cache support! 
[cache Resource] DOWNLOADING 
[cache Resource] event online: yes, event: checking, status: uncached 
[cache Resource] event online: yes, event: downloading, status: uncached 
[cache Resource] event online: yes, event: progress, status: uncached 
[cache Resource] event online: yes, event: progress, status: uncached 
[cache Resource] event online: yes, event: error, status: uncached (prolly a syntax error in manifest) 


이렇게 다운로드는 하는거같은데 뭔가 진행하다가 마지막에 error 가 나서 항상 uncached 상태가 되어 버립니다.


요거 좀 해보신 분들 도움좀 부탁드립니다. 


감사합니다.