Pregunta

Tengo este código en un applet. El applet funciona bien, pero recibo muchas descargas duplicadas innecesarias. En particular, he notado que cada "getResource" activa una descarga del archivo .JAR.

static {
    ac = new ImageIcon(MyClass.class.getResource("images/ac.png")).getImage();
    dc = new ImageIcon(MyClass.class.getResource("images/dc.png")).getImage();
    //...other images
}

¿Cómo se puede evitar esto?

¿Fue útil?

Solución

¿Incluye el applet a una página HTML? Si es así, intente habilitar el almacenamiento en caché JAR, como se describe aquí: http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/applet_caching.html

Si eso no ayuda por alguna razón :) quizás exponga sus recursos / imágenes a lo largo de su applet JAR en un servidor web y llegue a ellos mediante solicitudes HTTP separadas (sí, es feo y sí, no reduce la cantidad de descargas necesarias) , pero al menos reduce la cantidad de datos que deben transferirse).

Otros consejos

Simplemente eliminar todas las instancias de URLConnection.setDefaultUseCaches (false) resolverá el problema.

Consulte para obtener más detalles.

http: // java-junction .blogspot.com / 2009/11 / applet-jar-caching-not-working.html

Sólo una solución:

Puede poner sus imágenes en un archivo zip dentro del frasco, obtenerlas usando un ZipInputStream y extraer las imágenes desde allí.

¿Qué máquina virtual Java utiliza? ¿Y qué servidor usas?

  • Hay un error en el complemento del navegador en Linux.
  • Si el servidor no envía la fecha de modificación, Java no puede almacenar en caché el archivo jar.

Si su applet siempre descarga el archivo jar aunque el archivo jar esté en caché, asegúrese de no haber deshabilitado el almacenamiento en caché de URLConnection a través de la API: URLConnection.setUseCaches y < código> URLConnection.SetDefaultUseCaches .

El mecanismo subyacente de

ImageIcon para obtener el recurso es un URLConnection . Al llamar a URLConnection.setDefaultUseCaches (false) , establece una "parte del estado estático de todas las URLConnections " lo que hace que el JRE ignore el caché y vuelva a descargar todo el contenedor cada vez que acceda.

Simplemente eliminando todas las instancias de setDefaultUseCaches resolverá el problema.

este es un reenvío de: http: //java-junction.blogspot.com/2009/11/applet-jar-caching-not-working.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top