Pergunta

Eu tenho esse código em um applet. O applet funciona ok, mas eu recebo um monte de descarga duplicado desnecessário. Em particular, tenho notado que cada "getResource" desencadeia um download do arquivo .jar.

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

Como isso pode ser evitado?

Foi útil?

Solução

Você inclui o applet para uma página HTML? Se assim for, tente habilitar o cache JAR, como é descrito aqui: http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/applet_caching.html

Se isso não ajuda, por algum motivo :) talvez expor seus recursos / imagens ao longo de sua JAR aplicação em um servidor web e alcançá-las usando solicitações HTTP separadas (sim, o seu número feia e sim, ele não reduz de transferências necessárias , mas, pelo menos, reduz a quantidade de dados que devem ser transferidos).

Outras dicas

Simplesmente remover todas as instâncias do URLConnection.setDefaultUseCaches (falsos) vai resolver o problema.

Por favor, consulte para mais detalhes.

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

Apenas uma solução alternativa:

Você poderia colocar suas imagens em um arquivo zip dentro do frasco, que começa usando um ZipInputStream e extrair as imagens de lá.

Qual Java VM que você usa? E qual servidor você usa?

  • Há um erro no plug-in do navegador em Linux.
  • Se o servidor não envia a data de modificação, em seguida, Java não pode armazenar em cache o arquivo jar.

Se seu applet sempre faz o download do jar embora frasco é armazenado em cache, certifique-se que você não desativou o cache do URLConnection por meio da API:. URLConnection.setUseCaches e URLConnection.SetDefaultUseCaches

mecanismo subjacente de ImageIcon para buscar o recurso é um URLConnection. Chamando URLConnection.setDefaultUseCaches(false), define uma "parte do estado estático de todos URLConnections" que causam o JRE para ignorar a cache e baixar novamente todo o frasco cada vez que acessada.

Simplesmente remover todas as instâncias do setDefaultUseCaches vai resolver o problema.

este é um repost de: http: //java-junction.blogspot.com/2009/11/applet-jar-caching-not-working.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top