Java 애플릿이 영원히 캐시되고 새 버전을 다운로드하지 않습니까?
문제
클라이언트가 애플릿 버전을 영원히 캐싱하는 것처럼 보이는 경우가 있습니다.우리는 <param name="cache_version">
태그를 올바르게 지정하세요. <object>
태그라고 생각합니다.우리는 버전 문자열에서 갔다 7.1.0.40
에게 7.1.0.42
이로 인해 고객 중 약 절반만이 다운로드를 시작했습니다.
클라이언트가 실행 중인 JRE 버전은 중요하지 않은 것 같습니다.우리는 사람들이 1.4, 1.5, 1.6에서 이 문제를 겪는 것을 보았습니다.
명시적 캐시 버전을 사용해 본 경험이 있는 사람이 있나요?대신에 의존하는 것이 더 안정적으로 작동합니까(속도 무시)? cache_archive
의 "Last-Modified" 및/또는 "Content-Length" 값(기준: 썬의 사이트)?
참고로 객체 블록은 다음과 같습니다.
<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>
해결책
불행하게도 Java 플러그인 버전마다 캐싱 동작이 다릅니다.Cache-Control 및 Last-Modified HTTP 헤더를 설정하는 것이 이상적인 솔루션이지만 다음에서만 작동합니다. 최신 버전 JRE의.
작동이 보장되는 유일한 해결책은 버전이 변경될 때 애플리케이션 jar의 이름을 바꾸는 것입니다(파일 날짜를 기반으로 쿼리 문자열을 추가하는 것과 같은 다른 트릭을 시도할 때 이상한 캐싱 동작을 보았습니다).적절하게 자동화된 배포 시스템이 있다면 이는 그리 어렵지 않습니다.
다른 팁
다음을 사용하여 Java 캐시에서 애플릿을 제거할 수 있습니다. Java Control Panel
.
예를 들어 Win XP에서는
Start -> Control Panel -> Java -> Temporary Internet Files[View]
에 따라 이 링크 , 동일한 jar 파일이 "archive" 및 "cache_archive" 매개변수에 나열되어서는 안 됩니다.이 경우 JAR 파일은 기본 브라우저 캐시를 사용하여 캐시됩니다.