Tengo un applet que está cargando imágenes a través de una conexión http utilizando URLConnection. Estoy configurando setUseCaches (verdadero) para todas las conexiones, pero aún no veo ningún comportamiento de almacenamiento en caché. Los encabezados HTTP de mi imagen tienen una configuración de caché razonable. Si nos fijamos en bug 4528599 existe este lugar misterioso declaración:¿Cómo funciona URLConnection.setUseCaches() en la práctica?
La versión actual (1.3.1) de Java Plug-in sólo comprueba la caché del navegador para archivos cuyos nombres terminan en .jar o .class. Me han dicho que para Java Plug-In 1.4, la caché del navegador se comprobará para el siguiente archivo tipos: .class, .jar, .zip, .jpg, .gif, .wav, .au.
Por supuesto, esto se marcó como FIXED para 1.6, pero incluso en 1.6 no veo ningún almacenamiento en caché. Mis imágenes son archivos PNG y, en algunos casos, en realidad no terminan con la extensión .png. No veo ningún almacenamiento en caché.
El informe de corrección de errores habla sobre el motor de descarga 1.6, pero Google parece no saber mucho al respecto.
Se supone que funciona o simplemente es otra "característica" rota de Sun. ¿Hay alguna forma o solución alternativa en la que pueda obtener mi applet para cargar imágenes PNG desde el caché del navegador? Preferiría no implementar mi propio ...
ACTUALIZACIÓN: El almacenamiento en caché parece estar relacionado con la implementación ResponseCache. Consulte this technote para obtener más información sobre cómo funciona. La última línea dice:
No hay una implementación predeterminada de caché de URLConnection en el Java 2 Standard Edition. Sin embargo, Java Plugin y Java WebStart do proporcionan uno de la caja.
Me parece que la pregunta realmente se convierte en: ¿Cómo funciona realmente la implementación de ResponseCache de Java Plugin? ¿Cuáles son las diferencias entre v1.4/v1.5/v.16
¿Alguien tiene alguna idea?
Escribir uno propio no es trivial cuando el caché es persistente. Debe hacer que sea accesible para varias JVM que funcionan simultáneamente y debe limitar su tamaño. Realmente debería funcionar ... arrgh ... –
Definitivamente recomendaría no rodar tu propio caché. Si el cliente y el servidor están enviando los encabezados HTTP correctos pero no hay un caché HTTP intermedio configurado entre el cliente y el servidor, instale un caché de proxy como Varnish, Pound o Squid. –