Cómo usar el almacenamiento en caché de datos durante las operaciones de red (HTML)
[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente
En este tema se muestra cómo usar el almacenamiento en caché de datos con operaciones de red en una aplicación de Windows en tiempo de ejecución.
Almacenamiento en caché del contenido de la red como datos de aplicación
Al almacenar el contenido en disco tu aplicación se comporta de manera más rápida y fluida en situaciones en las que la aplicación finaliza de manera inesperada o el uso de la red es limitado. Por ejemplo, una aplicación lectora de fuentes RSS puede mostrar inmediatamente las fuentes que se almacenaron en caché en el disco en una sesión anterior. Cuando están disponibles las últimas fuentes, la aplicación puede actualizar su contenido. Esto garantiza que el usuario tenga contenido para ver inmediatamente después de iniciar la aplicación mientras espera nuevas actualizaciones de contenido.
Windows 8.1 proporciona la clase ApplicationData en el espacio de nombres Windows.Storage. Esta clase proporciona acceso al almacén de datos de la aplicación. Los datos de la aplicación son datos mutables específicos de una aplicación concreta. Incluyen el estado de tiempo de ejecución, las preferencias del usuario y otras opciones de configuración. Los datos de aplicación se crean, leen, actualizan y eliminan durante la ejecución de una aplicación. Para obtener más información, consulta el tema sobre cómo tener acceso a los datos de aplicación con Windows en tiempo de ejecución.
Los archivos transferidos por la aplicación mediante operaciones de red pueden almacenarse en caché como datos de aplicación en las carpetas Roaming, Local o Temporary.
Nota Windows Phone 8.1 también incluye una carpeta especial Cache para archivos que se han guardado o quitado de la aplicación intencionadamente.
Carpeta | Descripción |
---|---|
Local | Los archivos permanecen en el equipo en el que se escribieron originalmente y no se sincronizan con otros dispositivos. |
Temporal | Puede que los archivos se eliminen cuando no estén en uso. El sistema considera factores tales como la capacidad disponible en el disco y la antigüedad del archivo al determinar si va a eliminar un archivo temporal o cuándo lo va a hacer. |
Roaming | Los archivos se sincronizan entre los dispositivos en los que los usuarios iniciaron sesión con cuentas conectadas. La movilidad de los archivos no es instantánea; el sistema sopesa varios factores para determinar cuándo enviar los datos. El uso de datos móviles debería mantenerse por debajo de la cuota, definida por la propiedad RoamingStorageQuota; de lo contrario, se suspenderá la movilidad de los datos. No se pueden mover los archivos mientras una aplicación está escribiendo en ellos, así que debes asegurarte de cerrar los objetos de archivo de tu aplicación cuando ya no los necesites. |
Los siguientes fragmentos de código muestran el almacenamiento en caché de una respuesta del servidor, en formato de archivo .txt desde una operación de red, como datos de aplicación en la carpeta Roaming. El código también muestra cómo recuperar el contenido almacenado en caché mediante el nombre de archivo asociado.
Ejemplos
En primer lugar, definamos una referencia a la carpeta Roaming. Luego, en nuestro ejemplo cacheResponse se crea un nuevo archivo dentro de la carpeta Roaming y se indica que debe remplazarse cualquier archivo existente con el mismo nombre. Una vez que se crea el archivo, el contenido se escribe en el nuevo archivo serverResponse.txt desde el archivo que se devolvió originalmente con la respuesta del 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 tener acceso al archivo serverResponse.txt almacenado en caché más adelante, nuestro ejemplo getCachedResponse recupera el archivo por el nombre, definido por filename, y muestra el texto que contiene.
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
});
}
Para obtener acceso al contenido almacenado en caché incluido con la respuesta del servidor como datos de aplicación y poder visualizarlo más rápidamente, debes finalizar la aplicación y volverla a iniciar. Para obtener información detallada sobre cómo escribir opciones de configuración en el almacén de datos de la aplicación y cómo responder a eventos de movilidad, consulta el tema sobre cómo administrar datos de la aplicación o descarga la muestra de datos de la aplicación.
Temas relacionados
Ejemplo de los datos de la aplicación
Inicio rápido: datos de aplicación local
Inicio rápido: uso de perfil móvil con datos de aplicación