次の方法で共有


ネットワーク操作中にデータ キャッシュを使う方法 (HTML)

[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]

このトピックでは、Windows ランタイム アプリでネットワーク操作にデータ キャッシュを使う方法について説明します。

アプリ データとしてのネットワーク コンテンツのキャッシュ

ディスクにコンテンツを保存すると、アプリが予期せず終了されたときやネットワークの使用が制限されている状態で、アプリが迅速かつ柔軟に動作できます。たとえば、RSS フィード リーダー アプリであれば、以前のセッションでディスクにキャッシュされたフィードをすばやく表示できます。最新のフィードが利用できる場合には、コンテンツを更新できます。これにより、ユーザーは起動後すぐ、新しいコンテンツが更新されている間にコンテンツを表示できるようになります。

Windows 8.1 では、Windows.Storage 名前空間に ApplicationData クラスが用意されています。このクラスによって、アプリのデータ ストアにアクセスできます。アプリケーション データとは、特定のアプリに固有の実行可能データです。ランタイム状態、ユーザー設定、その他の設定が含まれます。アプリケーション データは、アプリの実行時に作成、読み取り、更新、削除が行われます。詳しくは、「Windows ランタイムを使ったアプリ データへのアクセス」をご覧ください。

ネットワーク操作を通じてアプリによって転送されたファイルは、RoamingLocal、または Temporary フォルダーにアプリ データとしてキャッシュできます。

  また Windows Phone 8.1 では、アプリによって意図的に保存または削除されるファイルのための特別な Cache フォルダーが含まれます。

 

フォルダー 説明
Local

ファイルは当初書き込まれたコンピューターに残り、他のデバイスと同期されません。

Temporary

ファイルは、使わない場合には削除されます。 システムは、ディスクの空き容量やファイルの保存期間などの要素を考慮して、一時ファイルを削除するかどうかや、削除するタイミングを判断します。

Roaming

ファイルは、ユーザーが接続されているアカウントでサインインしたデバイスの間で同期されます。ファイルのローミングは、即時に実行されるわけではありません。システムの側でさまざまな要素を検討し、データを送るタイミングを決定します。

ローミング データの使用量は、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
        });
}

サーバーの応答に含まれるコンテンツをアプリ データとしてキャッシュすると、アプリを終了して再起動したときにすばやくコンテンツにアクセスし、表示できます。アプリ データ ストアへの設定の書き込みとローミング イベントへの応答の方法については、「アプリ データの管理」を読むか、アプリケーション データ サンプルをダウンロードしてください。

関連トピック

アプリケーション データ サンプル

クイック スタート: ローカル アプリ データ

クイック スタート: アプリ データのローミング

クイックスタート: 一時アプリ データ

アプリのデータのローミングのガイドライン