Domanda

Ho questo codice su un'applet. L'applet funziona bene, ma ho molti download duplicati non necessari. In particolare, ho notato che ogni "getResource" attiva un download del file .JAR.

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

Come può essere evitato?

È stato utile?

Soluzione

Includete l'applet in una pagina HTML? In tal caso, prova ad abilitare la memorizzazione nella cache JAR, come descritto qui: http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/applet_caching.html

Se ciò non aiuta per qualche motivo :) forse esporre le risorse / immagini lungo il JAR dell'applet su un server Web e raggiungerle utilizzando richieste HTTP separate (sì, è brutto e sì, non riduce il numero di download necessari , ma almeno riduce la quantità di dati che devono essere trasferiti).

Altri suggerimenti

La semplice rimozione di tutte le istanze di URLConnection.setDefaultUseCaches (false) risolverà il problema.

Fare riferimento per maggiori dettagli.

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

Solo una soluzione alternativa:

Potresti mettere le tue immagini in un file zip all'interno del vaso, ottenerlo usando un ZipInputStream ed estrarre le immagini da lì.

Quale VM Java usi? E quale server usi?

  • C'è un bug nel plugin del browser su Linux.
  • Se il server non invia la data modificata, Java non può memorizzare nella cache il file jar.

Se l'applet scarica sempre il jar anche se jar è memorizzato nella cache, assicurati di non aver disabilitato la memorizzazione nella cache di URLConnection tramite l'API: URLConnection.setUseCaches e < code> URLConnection.SetDefaultUseCaches .

Il meccanismo sottostante di

?? ImageIcon per recuperare la risorsa è un URLConnection . Chiamando URLConnection.setDefaultUseCaches (false) , imposta una parte dello stato statico di tutti i URLConnections " che fa sì che JRE ignori la cache e scarichi nuovamente l'intero jar ogni volta che accede.

La semplice rimozione di tutte le istanze di setDefaultUseCaches risolverà il problema.

questo è un repost da: http: //java-junction.blogspot.com/2009/11/applet-jar-caching-not-working.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top