Question

J'ai ce code sur une applet. L'applet fonctionne bien, mais je reçois beaucoup de téléchargements inutiles en double. En particulier, j’ai remarqué que chaque " getResource " déclenche le téléchargement du fichier .JAR.

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

Comment cela peut-il être évité?

Était-ce utile?

La solution

Incluez-vous l'applet dans une page HTML? Si tel est le cas, essayez d'activer la mise en cache JAR, comme décrit ci-après: http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/applet_caching.html

Si cela ne vous aide pas pour une raison quelconque, peut-être exposer vos ressources / images le long de votre fichier JAR d'applet sur un serveur Web et les joindre à l'aide de requêtes HTTP distinctes (oui, c'est moche et oui, cela ne réduit pas le nombre de téléchargements nécessaires. , mais au moins, cela réduit la quantité de données à transférer).

Autres conseils

Le simple fait de supprimer toutes les instances de URLConnection.setDefaultUseCaches (false) résoudra le problème.

Veuillez vous référer pour plus de détails.

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

Seulement une solution de contournement:

Vous pouvez placer vos images dans un fichier zip à l'intérieur du fichier, le récupérer à l'aide d'un flux ZipInputStream et en extraire les images.

Quelle machine virtuelle Java utilisez-vous? Et quel serveur utilisez-vous?

  • Il y a un bogue dans le plug-in du navigateur sous Linux.
  • Si le serveur n'envoie pas la date de modification, Java ne peut pas mettre en cache le fichier jar.

Si votre applet télécharge toujours le fichier jar même si ce dernier est mis en cache, assurez-vous de ne pas désactiver la mise en cache de URLConnection via l'API: URLConnection.setUseCaches et < code> URLConnection.SetDefaultUseCaches .

Le mécanisme sous-jacent de

ImageIcon pour récupérer la ressource est un URLConnection . L'appel de URLConnection.setDefaultUseCaches (false) définit une "partie de l'état statique de toutes les URLConnections ". ce qui fait que le JRE ignore le cache et retélécharge le fichier jar entier à chaque accès.

Le simple fait de supprimer toutes les occurrences de setDefaultUseCaches résoudra le problème.

il s'agit d'une publication de: http: //java-junction.blogspot.com/2009/11/applet-jar-caching-not-working.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top