Поделиться через


Использование кэширования данных во время сетевых операций (HTML)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

В этом разделе показано, как использовать кэширование данных в приложении среды выполнения Windows при работе в сети.

Кэширование сетевого содержимого как данных приложения

Сохранение содержимого на диск обеспечивает скорость и плавность действий приложения при неожиданном прерывании или ограничении доступа к сети. Например, приложение для чтения RSS-канала может немедленно отображать каналы, которые были кэшированы на диск во время предыдущего сеанса. Когда будут доступны последние каналы, приложение сможет обновить содержимое. Это гарантирует, что у пользователя будет содержимое для просмотра сразу после запуска, пока он ожидает обновления содержимого.

Windows 8.1 предоставляет класс ApplicationData в пространстве имен Windows.Storage. Этот класс дает доступ к хранилищу данных приложения. Данные приложения — это изменяемые данные, присущие определенному приложению. К ним относится состояние среды выполнения, предпочтения пользователей и другие параметры. Данные приложения создаются, считываются, обновляются и удаляются при выполнении приложения. Подробнее см. на странице Доступ к данным приложений с помощью среды выполнения Windows.

Файлы, переданные приложением во время работы в сети, можно кэшировать как данные приложения в папках Roaming, Local или Temporary:

Примечание  Windows Phone 8.1 также включает специальную папку Cache для файлов, которые намеренно создает или перемещает ваше приложение.

 

Папка Описание
Локальные

Файлы остаются на компьютере, где они были записаны изначально, и не синхронизируются с другими устройствами.

Временные

Файлы подлежат удалению, если не используются. Система учитывает такие факторы, как доступная емкость диска и время создания файла при определении того, когда удалять временный файл и нужно ли это делать.

Перемещаемые

Файлы синхронизированы между устройствами, на которые пользователи вошли через подключенные учетные записи. Перемещение файлов не происходит моментально; система учитывает несколько факторов при определении того, когда нужно отправить данные.

Использование перемещаемых данных должно быть ниже нормы (определенной через свойство RoamingStorageQuota), иначе перемещение данных будет приостановлено. Файлы не могут перемещаться в то время, когда к ним обращается приложение, поэтому убедитесь, что вы закрыли файловые объекты приложения, если они больше не требуются.

 

Фрагменты кода ниже демонстрируют кэширование ответа сервера в форме файла .txt из сетевой операции, как данных приложения в папку Roaming. Затем код демонстрирует, как извлекать кэшированное содержимое с помощью связанного имени файла.

Примеры

Сперва мы определяем ссылку на папку Roaming. Затем наш пример cacheResponse создает новый файл в папке Roaming и указывает, что все существующие файлы с тем же именем должны быть заменены. После создания файла его содержимое записывается в новый файл 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
        });
}

Кэширование содержимого из ответов сервера как данных приложения обеспечивает быстрый доступ после прерывания и перезапуска приложения. Дополнительные сведения о написании настроек для хранилища данных приложения и о том, как реагировать на события роуминга, см. в разделе Управление данными приложения или скачайте Образец данных приложения.

Связанные разделы

Пример данных приложения

Краткое руководство: локальные данные приложения

Краткое руководство: перемещаемые данные приложения

Краткое руководство: временные данные приложения

Руководство по перемещаемым данным приложения