다음을 통해 공유


네트워크 작업 동안 데이터 캐싱을 사용하는 방법(HTML)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

이 항목에서는 Windows 런타임 앱의 네트워크 작업에서 데이터 캐싱을 사용하는 방법을 보여 줍니다.

네트워크 콘텐츠를 앱 데이터로 캐싱

앱이 예기치 않게 종료되거나 네트워크 사용이 제한되는 경우 콘텐츠를 디스크에 저장하면 앱 동작이 신속하고 유연해집니다. 예를 들어 RSS 피드 뷰어 앱이 이전 세션에서 디스크로 캐싱된 피드를 즉시 표시할 수 있습니다. 최신 피드를 사용할 수 있게 되면 앱에서 해당 콘텐츠를 업데이트할 수 있습니다. 이렇게 하면 새 콘텐츠 업데이트를 기다리는 동안 사용자가 실행 즉시 볼 수 있는 콘텐츠를 보유하게 됩니다.

Windows 8.1은 Windows.Storage 네임스페이스에 ApplicationData 클래스를 제공합니다. 이 클래스는 앱 데이터 저장소에 액세스할 수 있게 해줍니다. 응용 프로그램 데이터는 특정 앱에 대한 변경 가능한 데이터입니다. 여기에는 런타임 상태, 사용자 기본 설정 및 기타 설정이 포함됩니다. 응용 프로그램 데이터는 앱이 실행 중일 때 만들기, 읽기, 업데이트, 삭제가 수행됩니다. 자세한 내용은 Windows 런타임을 사용하여 앱 데이터 액세스를 참조하세요.

네트워크 작업을 통해 앱에서 전송한 파일은 Roaming, Local 또는 Temporary 폴더에서 앱 데이터로 캐시할 수 있습니다.

참고  Windows Phone 8.1에는 앱에서 의도적으로 저장되거나 제거되는 파일에 사용할 특수 Cache 폴더도 포함됩니다.

 

폴더 설명
로컬

파일이 원래 작성된 시스템에 유지되고 다른 장치와 동기화되지 않습니다.

Temporary

파일이 사용되지 않으면 삭제될 수 있습니다. 시스템에서는 임시 파일의 삭제 시기 또는 여부를 결정할 때 사용 가능한 디스크 용량 및 파일의 사용 기간과 같은 요소를 고려합니다.

로밍

사용자가 연결된 계정을 통해 로그인한 장치 간에 파일이 동기화됩니다. 파일 로밍은 즉각적이지 않습니다. 시스템에서는 데이터의 전송 시기를 결정할 때 여러 요소를 고려합니다.

로밍 데이터 사용량은 RoamingStorageQuota 속성으로 정의된 할당량 미만으로 유지되어야 하며 그렇지 않으면 데이터 로밍이 일시 중단됩니다. 앱에서 파일에 작성하는 동안에는 파일을 로밍할 수 없으므로 앱의 파일 개체가 더 이상 필요하지 않을 때에는 앱의 파일 개체를 닫아야 합니다.

 

다음 코드 조각에서는 네트워크 작업에서 .txt 파일 형식으로 서버 응답을 앱 데이터로 로밍 폴더에 캐싱하는 것을 보여 줍니다. 그런 다음 연관된 파일 이름을 사용하여 캐시된 콘텐츠를 검색하는 방법을 보여 줍니다.

예제

먼저 Roaming 폴더에 대한 참조를 정의합니다. 다음으로 cacheResponse 예제에서는 로밍 폴더 내에 새 파일을 만들고 이름이 같은 기존 파일이 대체됨을 나타냅니다. 파일을 만들고 나면 서버 응답으로 처음에 반환된 파일에서 새 serverResponse.txt 파일에 콘텐츠가 기록됩니다.

var roamingFolder = Windows.Storage.ApplicationData.current.roamingFolder;
var filename = "serverResponse.txt";

function cacheResponse(strResponse) {
    roamingFolder.createFileAsync(filename, Windows.Storage.CreationCollisionOption.replaceExisting)
        .done(function (file) {
            return Windows.Storage.FileIO.writeTextAsync(file, strResponse);
        });
}

캐시된 serverResponse.txt 파일에 나중에 액세스하기 위해 getCachedResponse 예제에서는 filename에 정의된 이름으로 파일을 검색하고 해당 파일에 포함된 텍스트를 표시합니다.


function getCachedResponse() {
    roamingFolder.getFileAsync(filename)
        .then(function (file) {
            return Windows.Storage.FileIO.readTextAsync(file);
        }).done(function (response) {
            print(response);
        }, function () {
            // getFileAsync or readTextAsync failed. 
            // No cached response
        });
}

서버 응답에 앱 데이터로 포함된 캐싱 콘텐츠는 신속한 액세스를 허용하며 앱 종료 및 다시 시작 후에 표시합니다. 앱 데이터 저장소에 설정을 기록하는 방법 및 로밍 이벤트에 응답하는 방법에 대한 자세한 내용은 앱 데이터 관리를 참조하거나 응용 프로그램 데이터 샘플을 다운로드하세요.

관련 항목

응용 프로그램 데이터 샘플

빠른 시작: 로컬 앱 데이터

빠른 시작: 로밍 중인 앱 데이터

빠른 시작: 임시 앱 데이터

앱 데이터 로밍 지침