Inicio / Wikis / Tutoriales / Los rincones del API Win32: El caché de WinInet - Uso transparente del caché con WinInet

Los rincones del API Win32: El caché de WinInet - Uso transparente del caché con WinInet

Tutorial creado por Juan Manuel. Extraido de: http://www.lawebdejm.com
27 de Agosto de 2005
Programación estructurada

4 - Uso transparente del caché con WinInet

Como acabamos de decir, el caché de Internet Explorer puede ser utilizado de una forma transparente a través de las funciones de WinInet. Simplemente indicando que queremos trabajar sin conexión, podemos hacer cualquier tipo de llamada, pero sólo devolverán datos aquellas que encuentren la información en el caché de Internet Explorer.

Vamos a poner un ejemplo. Recordemos cómo escribir una pequeña rutina (simplificada) que recupere una página web, a través del protocolo HTTP:

{ HINTERNET hInet = InternetOpen("Agente WinInet", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, ); HINTERNET hPagina = InternetOpenUrl(hInet, "http://www.lawebdejm.com/index.html", NULL, , , NULL); char buff[1024]; DWORD size = 1024; InternetReadFile(hPagina, buff, 1024, &size); MessageBox(GetActiveWindow(), buff, "Contenido", MB_ICONINFORMATION); InternetCloseHandle(hPagina); InternetCloseHandle(hInet); }

Como vemos, este pequeño código recupera una página, la almacena en un buffer estático de 1024 bytes y la muestra en un mensaje.

Lógicamente, si la conexión a internet no está disponible, los datos no se podrán recuperar correctamente.

Sin embargo, podemos hacer un pequeño cambio, para acceder al caché en vez de acceder a internet. El cambio es tan sencillo como añadir la bandera INTERNET_FLAG_OFFLINE al último parámetro de InternetOpen:

{ HINTERNET hInet = InternetOpen("Agente WinInet", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, INTERNET_FLAG_OFFLINE); HINTERNET hPagina = InternetOpenUrl(hInet, "http://www.lawebdejm.com/index.html", NULL, , , NULL); if (hPagina
NULL && GetLastError()
ERROR_FILE_NOT_FOUND) MessageBox(GetActiveWindow(), "El recurso no se encuentra en el caché de internet.", "Error de caché", MB_ICONINFORMATION); else { lectura como en el anterior código } }
Simplemente hemos añadido la opción INTERNET_FLAG_OFFLINE, y una comprobación para asegurarnos de que hemos encontrado el recurso en el caché. La mayoría de las funciones de WinInet, establecen el error ERROR_FILE_NOT_FOUND cuando intentan acceder a un recurso que no existe en el caché.

Como vemos, el uso del caché es totalmente transparente, y cambiando una simple bandera, podemos hacer que WinInet se comporte de una u otra forma.

Además, el uso de las funciones de WinInet no sólo consultan los datos del caché, sino que también almacenan los datos recuperados en él. Por ejemplo, cuando se ejecuta el primer código, y se lee el resultado hasta el final, la página quedará almacenada en el caché, a no ser que se haya incluido la bandera INTERNET_FLAG_NO_CACHE_WRITE en la llamada a InternetOpenUrl.

Para configurar este comportamiento, Las funciones de InternetConnect e InternetOpenUrl permiten ciertas banderas especiales, como por ejemplo con INTERNET_FLAG_NO_CACHE_WRITE, INTERNET_FLAG_PRAGMA_NOCACHE, INTERNET_FLAG_RESYNCHRONIZE, etc.
Valora este capítulo:
Autor y licencia de 'Los rincones del API Win32: El caché de WinInet - Uso transparente del caché con WinInet'
Juan Manuel Extraído de: http://www.lawebdejm.com

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Opiniona sobre 'Los rincones del API Win32: El caché de WinInet - Uso transparente del caché con WinInet' (0)

Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este tutorial



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'Los rincones del API Win32: El caché de WinInet - Uso transparente del caché con WinInet'

Entramos en temas interesantes: el acceso a recursos remotos a través del protocolo de aplicación... Más »
Comienzo con un nuevo tema dentro dentro de la serie Los rincones del API Win32.... Más »
En el anterior curso dejamos muchos temas en el tintero, así que voy a terminar... Más »
Damos una visión detallada de una de las características más interesantes de esta tecnología de... Más »
Curso que profundiza en el gestor de montones (o montículos) dentro de Win32, así como... Más »
¿Estás seguro de que deseas eliminar este capítulo?