¿El subprograma de Java se almacena en caché para siempre y no descarga la nueva versión?

StackOverflow https://stackoverflow.com/questions/66875

  •  09-06-2019
  •  | 
  •  

Pregunta

Tenemos un caso en el que los clientes parecen estar eternamente almacenando en caché versiones de subprogramas.Estamos haciendo uso del <param name="cache_version"> etiquetar correctamente dentro de nuestro <object> etiqueta, o eso creemos.Pasamos de una cadena de versión de 7.1.0.40 a 7.1.0.42 y esto provocó una descarga solo para aproximadamente la mitad de nuestros clientes.

No parece importar qué versión de JRE esté ejecutando el cliente.Hemos visto personas que tienen este problema en 1.4, 1.5 y 1.6.

¿Alguien tiene experiencia con versiones de caché explícitas?¿Funciona de manera más confiable (ignorando la velocidad) para confiar en el cache_archivelos valores "Última modificación" y/o "Longitud del contenido" (según Sitio del Sol)?

Para su información, el bloque de objetos se ve así:

<object>
  <param name="ARCHIVE" value="foo.jar">
  <param name="CODE" value="com.foo.class">
  <param name="CODEBASE" value=".">
  <param name="cache_archive" value="foo.jar">
  <param name="cache_version" value="7.1.0.40">
  <param name="NAME" value="FooApplet">
  <param name="type" value="application/x-java-applet;jpi-version=1.4.2_13">
  <param name="scriptable" value="true">
  <param name="progressbar" value="true"/>
  <param name="boxmessage" value="Loading Web Worksheet Applet..."/>
</object>
¿Fue útil?

Solución

Desafortunadamente, las diferentes versiones del complemento Java tienen diferentes comportamientos de almacenamiento en caché.Configurar los encabezados HTTP Cache-Control y Last-Modified es la solución ideal, pero solo funciona bajo las versiones más recientes de la JRE.

La única solución que GARANTIZA que funciona es cambiar el nombre de los archivos jar de su aplicación cuando cambian sus versiones (hemos visto un comportamiento extraño de almacenamiento en caché al probar otros trucos como agregar cadenas de consulta basadas en fechas de archivos).Esto no es tan difícil de hacer si tiene un sistema de implementación adecuadamente automatizado.

Otros consejos

Puede eliminar el subprograma de la caché de Java usando Java Control Panel.
Por ejemplo, en Win XP

Start -> Control Panel -> Java -> Temporary Internet Files[View]

según este enlace , el mismo archivo jar no debe aparecer en los parámetros "archive" y "cache_archive".En ese caso, el archivo JAR se almacena en caché utilizando la caché del navegador nativo.

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