JAR многократная загрузка - PullRequest
2 голосов
/ 05 марта 2009

У меня есть этот код в апплете. Апплет работает нормально, но я получаю много ненужных дубликатов загрузки. В частности, я заметил, что каждый «getResource» запускает загрузку файла .JAR.

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

Как этого избежать?

Ответы [ 5 ]

3 голосов
/ 29 ноября 2009

Простое удаление всех экземпляров URLConnection.setDefaultUseCaches (false) решит проблему.

Пожалуйста, обратитесь за более подробной информацией.

http://java -junction.blogspot.com / 2009/11 / апплет-банку-кэширование не-working.html

2 голосов
/ 05 марта 2009

Включаете ли вы апплет на страницу HTML? Если это так, попробуйте включить кэширование JAR, как описано здесь: http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/applet_caching.html

Если по какой-то причине это не помогает :) возможно, предоставьте свои ресурсы / изображения вдоль JAR-файла апплета на веб-сервере и обращайтесь к ним с помощью отдельных HTTP-запросов (да, это ужасно и да, это не уменьшает количество необходимых загрузок , но это как минимум уменьшает объем данных, которые необходимо передать).

0 голосов
/ 29 июля 2011

Если ваш апплет всегда загружает jar, даже если jar кэшируется, убедитесь, что вы не отключили кэширование URLConnection через API: URLConnection.setUseCaches и URLConnection.SetDefaultUseCaches.

Основным механизмом извлечения ресурса

ImageIcon является URLConnection. Вызов URLConnection.setDefaultUseCaches(false) устанавливает «часть статического состояния всех URLConnections», которое заставляет JRE игнорировать кеш и перезагружать весь jar каждый раз, когда к нему обращаются.

Простое удаление всех экземпляров setDefaultUseCaches решит проблему.

это репост из: http://java -junction.blogspot.com / 2009/11 / applet-jar-caching-not-working.html

0 голосов
/ 10 марта 2009

Какую Java VM вы используете? А какой сервер вы используете?

  • В плагине браузера в Linux имеется ошибка.
  • Если сервер не отправляет дату изменения, то Java не может кэшировать файл JAR.
0 голосов
/ 05 марта 2009

Только обходной путь:

Вы можете поместить свои изображения в zip-файл внутри банки, получить это с помощью ZipInputStream и извлечь изображения оттуда.

...