Como usar cache de dados durante operações de rede (HTML)
[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]
Este tópico mostra como usar o cache de dados com operações de rede em um aplicativo do Tempo de Execução do Windows.
Armazenando conteúdo da rede em cache como dados de aplicativo
Armazenar o conteúdo no disco permite que seu aplicativo funcione de maneira rápida e suave em situações de encerramento inesperado ou em que o uso de uma rede é limitado. Por exemplo, um leitor de RSS feed pode exibir imediatamente os feeds armazenados em cache no disco de uma sessão anterior. Depois que os feeds mais recentes estiverem disponíveis, o aplicativo poderá atualizar seu conteúdo. Isso garante que haja conteúdo para ser exibido para o usuário imediatamente após a inicialização enquanto o novo conteúdo é atualizado.
O Windows 8.1 fornece a classe ApplicationData no namespace Windows.Storage. Essa classe fornece acesso ao repositório de dados do aplicativo. Dados de aplicativo são dados mutáveis específicos a determinado aplicativo. Eles incluem estado de tempo de execução, preferências de usuário e outras configurações. Os dados de aplicativos são criados, lidos, atualizados e excluídos durante a execução do aplicativo. Para saber mais, veja Acessando dados de aplicativo com o Tempo de Execução do Windows.
Os arquivos transferidos pelo seu aplicativo por meio de operações de rede podem ser armazenados em cache como dados de aplicativo nas pastas Roaming, Local ou Temporary.
Observação O Windows Phone 8.1 inclui também uma pasta Cache especial para arquivos que são intencionalmente salvos ou removidos por seu aplicativo.
Pasta | Descrição |
---|---|
Local | Os arquivos permanecem na máquina em que foram gravados originalmente e não são sincronizados com outros dispositivos. |
Temporários | Os arquivos são sujeitos à exclusão quando não estão em uso. O sistema leva em consideração fatores como a capacidade de disco disponível e a idade de um arquivo ao determinar quando ou se um arquivo temporário deve ser excluído. |
Roaming | Os arquivos são sincronizados entre os dispositivos em que os usuários entraram com contas conectadas. O roaming de arquivos não é instantâneo; o sistema pondera vários fatores ao determinar quando os dados devem ser enviados. O uso de dados de roaming deve ser mantido abaixo da cota definida pela propriedade RoamingStorageQuota. Caso contrário, o roaming de dados será suspenso. Os arquivos não podem ser movidos enquanto um aplicativo ainda está realizando gravação neles. Por isso, feche os objetos de arquivo do aplicativo quando eles não forem mais necessários. |
Os trechos de código abaixo demonstram o armazenamento em cache de uma resposta do servidor (na forma de um arquivo .txt de uma operação de rede) como dados do aplicativo na pasta Roaming. Em seguida, o código demonstra como recuperar o conteúdo em cache usando o nome do arquivo associado.
Exemplos
Primeiro, defina uma referência à pasta Roaming. Em seguida, nosso exemplo cacheResponse cria um novo arquivo na pasta Roaming e indica que qualquer arquivo existente com o mesmo nome deve ser substituído. Depois que o arquivo é criado, o conteúdo é gravado no novo arquivo serverResponse.txt a partir do arquivo originalmente retornado com a resposta do servidor.
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);
});
}
Para acessar o arquivo serverResponse.txt armazenado em cache posteriormente, nosso exemplo getCachedResponse recupera o arquivo pelo nome definido por filename e exibe o texto que ele contém.
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
});
}
O armazenamento em cache do conteúdo incluído na resposta do servidor como dados de aplicativo permite rápido acesso e exibição após o encerramento ou a reinicialização de um aplicativo. Para saber mais sobre como gravar configurações no repositório de dados do aplicativo e como responder a eventos de roaming, leia Gerenciando dados de aplicativo ou baixe a Amostra de dados do aplicativo.
Tópicos relacionados
Amostra de dados do aplicativo
Início rápido: dados locais de aplicativo
Início rápido: dados de aplicativo em roaming