2013-08-27 2 views
2

나는이 예제 같은 가게가있는 경우 :Sencha Touch : HTML 응용 프로그램 캐시의 데이터를 저장소에로드 하시겠습니까?

var myStore = Ext.create("Ext.data.Store", { 
    model: "User", 
    proxy: { 
     type: "ajax", 
     url : "/users.json", 
     reader: { 
      type: "json", 
      rootProperty: "users" 
     } 
    }, 
    autoLoad: true 
}); 

내가 응용 프로그램 캐시에 users.json 파일을 캐시 할, 그래서 다음과 같이 내가 app.json에 추가 :

/** 
    * Used to automatically generate cache.manifest (HTML 5 application cache manifest) file when you build 
    */ 
    "appCache": { 
     /** 
     * List of items in the CACHE MANIFEST section 
     */ 
     "cache": [ 
      "index.html", 
      "users.json" 
     ], 
     /** 
     * List of items in the NETWORK section 
     */ 
     "network": [ 
      "*" 
     ], 
     /** 
     * List of items in the FALLBACK section 
     */ 
     "fallback": [] 
    }, 

크롬에서 상대를 개발자 도구를 사용하면 .json 파일이 index.html과 함께 응용 프로그램 캐시에 올바르게 추가되었음을 알 수 있습니다.

나는 오프라인에서 '그냥 작동'할 것으로 기대합니다. 안타깝게도 json 파일을 요청하려고 시도합니다. json 파일은 오프라인 일 때 작동하지 않으며 응용 프로그램에서 해당 데이터를 더 이상 사용하지 않습니다.

나머지 응용 프로그램은 완벽하게 작동합니다. 어떤 아이디어?

답변

0

API 설명서를 살펴보고 속성에 대한 시행 착오를 수행하여 해결책을 찾았습니다. 그것은 전혀 분명하지 않습니다.

문제는 .json 파일 요청에 추가 인수 인 ?dc=XXXXXXX과 페이징 인수가 추가되는 것이 었습니다. 프록시에 적용해야하는 두 가지 추가 속성은 noCacheenablePagingParams입니다. 이것은 트릭을했다.

var myStore = Ext.create("Ext.data.Store", { 
    model: "User", 
    proxy: { 
     type: "ajax", 
     url : "/users.json", 
     noCache: false, 
     enablePagingParams: false, 
     reader: { 
      type: "json", 
      rootProperty: "users" 
     } 
    }, 
    autoLoad: true 
}); 

나는 또한 로더 오류를 받고 유지로 상점에 대한 변경 사항이 제대로 감지되었는지 확인하기 위해, 내 테스트 cache.manifest 파일의 헤더 주석을 업데이트 할 필요가 있었다. sencha CMD를 사용하여 응용 프로그램 캐시 파일을 자동 생성 할 때 프로덕션 버전을 빌드하면 문제가되지 않습니다.

Ext.Loader.setConfig({ 
    disableCaching: false 
}); 

희망이 누군가 도움 :

참고 : 내 app.js뿐만 아니라 파일에 이미 다음 있었나요은 널리 문서화!

관련 문제