2011-03-22 7 views
2

웹에서 데이터가 필요한 Android 애플리케이션을 작성하고 싶습니다. 이 정보는 json 파일에 저장됩니다. json 파일의 데이터가 장치에 저장됩니다. 최신 상태로 유지하려면 매 시간마다 파일의 변경 사항을 확인해야합니다.Android : 변경된 경우에만 파일 다운로드

원격 파일이 상당히 커질 수 있기 때문에 이전에 다운로드 한 버전과 다른 경우에만 다운로드하고 싶습니다. 나는 이것에 대해 HTTP의 Last-Modified-Header를 사용하는 것에 대해 생각했다.

나는 다음과 같은 워크 플로우 (의사 코드)를 내놓았다 :

  • data = null; data_timestamp = null;
  • 매 시간마다 반복 :
    • 문제 헤더 Last-Modified의 URL 및 옵션 new_timestamp에 HTTP 헤드-요청 .
    • 만약 하나 data==null 또는 다음 new_timestamp > data_timestamp
      • 문제 정상적인 URL을 data
      • 에 저장하기 HTTP-요청 및 data_timestamp = new_timestamp

당신이 합리적인 생각합니까 설정을 접근? 마지막 다운로드 이후에 변경된 경우에만 if-modified-since HTTP 헤더를 사용하여 데이터를 가져올 수 있습니다. 이것은 나에게 하나의 요청을 구할 것이다. 변경된 경우, 새 데이터를 포함하는 본문이 제공되며 그렇지 않은 경우 본문은 비어 있습니다.

나는 또한 일반적으로 파일에 새 콘텐츠가있는 경우 (그리고 수정 된 날짜가 변경되지 않은 경우) 다운로드하려는 경우 ETags를 사용하려고 생각했지만 웹 서버 (nginx)는 etags 및 성능상의 이유로 서버 측에 다른 레이어를 포함하고 싶지 않습니다.

답변

0

나는 위에서 설명한대로 문제를 해결했습니다 : if-modified-since HTTP 헤더를 사용하여 파일을 다운로드하십시오. ngnix 웹 서버는이 헤더와 관련된 올바른 정보를 반환하도록 구성 할 수 있습니다.

관련 문제