Tengo una aplicación simple cargando un sitio optimizado para el iPhone en un UIWebView
.¿Es posible almacenar en caché los recursos cargados en un UIWebView de iPhone?
El problema es que no parece almacenamiento en caché para trabajar:
[webView loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString: url]
cachePolicy: NSURLRequestUseProtocolCachePolicy
timeoutInterval: 60.0]];
Cualquier cosas que se hace referencia en esta página remota (CSS, imágenes, archivos javascript externos) nunca se caché (las peticiones nunca envían a Si-Modified- Desde el encabezado o cualquier otra cosa en el camino de control de caché.)
¿Es posible? Parece que con un Cocoa WebView normal hay métodos de delegado a los que se llama para cada solicitud de recursos y post carga (-didFinishLoadingFromDataSource:
) que puede usar para rodar su propio almacenamiento en caché ... pero eso no parece aplicable aquí.
Toda mi página (la página y los recursos a los que se hace referencia) tiene unos 89K comprimidos ... que es lento en 3G en algunos puntos y aún peor en EDGE. Las solicitudes entrantes indican al menos que acepta la compresión (accept-encoding=gzip, deflate
), así que eso es bueno, supongo.
Leo this yui study, lo que parece indicar que el iPhone almacenará en caché 25k por artículo. La única referencia que tiene más de 25k sin comprimir es jquery (empaquetado pero sin comprimir, es 30k). Todo lo demás debe ser almacenable en caché. Ninguna solicitud de ningún elemento al que se haga referencia en la página recuperada está activando un 304 en el lado del servidor.
Ese estudio yui fue hace casi un año, y supongo que solo con safari móvil.
Esto está utilizando un UIWebView
en una aplicación de iPhone nativa.
Genio, aunque bastante inquietante. –
La mejor manera de hacerlo mal. Hombre, estamos buscando aquí al menos una solución más útil –
@ eagle.dan.1349 ¿por qué es la mejor manera de hacerlo mal? en ausencia de "una solución un poco más práctica" esta * es * la solución más útil – abbood