2008-09-15 11 views
6

Tenemos un caso en el que los clientes parecen estar eternamente almacenando en caché las versiones de los applets. Estamos utilizando la etiqueta <param name="cache_version"> correctamente dentro de nuestra etiqueta <object>, o al menos eso creemos. Pasamos de una cadena de versión de 7.1.0.40 a 7.1.0.42 y esto desencadenó una descarga solo para aproximadamente la mitad de nuestros clientes.applet de Java almacenado en caché para siempre, sin descargar una nueva versión?

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

¿Alguien tiene experiencia con versiones explícitas de caché? ¿Funciona de manera más confiable (ignorando la velocidad) para confiar en los valores cache_archive "Last-Modified" y/o "Content-Length" (según Sun's Site)?

FYI, bloque objeto se parece a esto:

<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> 

Respuesta

9

Desafortunadamente, diferentes versiones del Java Plug-In tienen diferentes comportamientos de almacenamiento en caché. Establecer los encabezados HTTP de Caché-Control y Last-Modified es la solución ideal, pero solo funciona bajo the most recent versions del JRE.

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

0

Según this link , el mismo archivo jar no se debe enumerar int en los parámetros "archive" y "cache_archive". En ese caso, el archivo JAR se almacena en caché utilizando la memoria caché del navegador nativo.

+0

¡El enlace está roto! – coderama

1

Puede eliminar el applet de la memoria caché de Java utilizando Java Control Panel.
Por ejemplo, en Win XP

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