2010-04-22 16 views
8

Ich habe ein Problem mit einem Java-Applet, das ich bereitgestellt habe, das sich weigert, im "sticky" -Cache (oder vom Browser) des jvm zwischengespeichert zu werden. Aus irgendeinem Grund lädt der Benutzer jedes Mal, wenn ein Benutzer die Seite lädt, auf der sich dieses Applet befindet, die JAR-Datei erneut vom Server herunter, was zu einer langen Verzögerung führt.Java-Applet nicht im Cache

Die Webseite mit dem Applet wird über das Internet zugegriffen wird, so nach Sun's Java applet documentation Ich bin mit einem <applet> Tag eher als einen <object> oder <embed>-Tag.

Jede Hilfe, die das Problem debuggt oder identifiziert, würde sehr geschätzt werden.

Unten ist die vollständige Applet-Tag Ich verwende:

<applet alt="Scanning Applet failed to load" archive="scanning.jar" 
     code="scanning.scanlet.class" codebase="/java/" codetype="application/java" 
     height="30" mayscript="True" name="scanlet" width="200"> 
    <param name="domain" value="192.168.12.23" /> 
    <param name="publishName" value="scan_attachment" /> 
    <param name="publishURL" value="http://192.168.12.23/draft/update/52" /> 
    <param name="curURL" value="http://192.168.12.23/draft/edit/52" /> 

Your browser is unable to process the Java &lt;APPLET&gt; tag needed to display this applet 
<br /> 
One solution would be to download a better web browser like 
<a href="http://www.mozilla.com/firefox">Mozilla's Firefox</a> 

</applet> 
+0

Ich habe Protokollierung und Tracing über die Java-Systemsteuerung aktiviert-> Advanced-> Debuggen und ich bekomme viele Wiederholungen der folgenden Nachricht: Netzwerk: Cache-Eintrag nicht gefunden [url: http : //192.168.12.23/java/scanning.jar, Version: 1.0] –

+0

General StackOverflow Frage: Gibt es keine Möglichkeit die "Kommentare" so gut wie die erste Frage zu formatieren? –

Antwort

1

Diese offizielle Artikel beschreibt, wie Sie Ihre Applet-Tag-Caching erhöhen ändern können:

http://java.sun.com/products/plugin/1.3/docs/appletcaching.html

+0

Jon, danke für die schnelle Antwort, leider habe ich dieses offizielle Dokument auf und ab. Da ich nur das Attribut archive verwendet habe, hätte ich auch ohne die neuen cache_ * -Attribute eine Art Caching im Fallback-Browser-Level erhalten sollen, oder? –

+0

Nach dem Hinzufügen der cache_ * -Attribute zu meinem Applet-Tag, wie folgt, weigert sich das Applet immer noch, zwischengespeichert zu werden durch den jvm: ... gleiche Parameter, etc ..

+0

Nun, Dieses "Fallback Browser Level Caching" wird immer noch von der JVM durchgeführt und stellt normalerweise das Problem dar. – ArtemGr

2

persönlich löste ich die Caching-Probleme durch Verwendung der Parameter cache_archive und cache_version dokumentiert unter http://java.sun.com/javase/6/docs/technotes/guides/plugin/developer_guide/applet_caching.html

Mein ca che_version basiert auf dem tatsächlichen Dateiänderungsdatum, z.

val archive = libs.map("/" + _.getPath).mkString (", ") 
val version = libs.map(_.getUpdated/1000/20 - 59281420).mkString (", ") 

und mit MSIE zu arbeiten, um es sieht aus, als:

if (msie) { 
    cms write <OBJECT 
    classid="clsid:CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA" 
    codebase="http://java.sun.com/update/1.6.0/jinstall-6-windows-i586.cab" 
    width="100%" height="100%"> 
    ... 
    <PARAM name="cache_archive" value={archive}/> 
    <PARAM name="cache_version" value={version}/> 
    </OBJECT> 
} else { 
    cms write <applet ... 
    cache_archive={archive} cache_version={version}></applet> 
} 
+0

ArtemGr, danke für die detaillierte Antwort. Alle unsere Benutzer greifen über Firefox auf die Seite zu, also kann nicht verwendet werden Mein Applet-Tag enthält die cache_ * -Attribute (_archive, _option, & _version), aber das Applet wird immer noch jedes Mal neu geladen, wenn ich zu der betreffenden Seite zurück blicke .. Hier ist mein modifiziertes Applet-Tag: < applet cache_archive = "scannen.jar" cache_option = "Plugin" cache_version = "1.0" code = "scannen.scanlet.class" codebase = "/ java /" codetype = "applikation/java" height = "30" mayscript = "True "Name =" Scanlet „Width =“ 200" > ... gleiches params, etc .. –

+0

Ist es nur mit dir passiert oder es an alle (einige) die Benutzer der Website geschieht? Wenn das erste, dann könnte es sein, dass das Java-Plugin auf Ihrem Computer die Datei aus irgendeinem Grund nicht zwischenspeichern kann? Unter Windows Java Plugin haben Sie die Möglichkeit, im Browser-Cache zwischenzuspeichern. In diesem Fall können die Beschränkungen des Browser-Caches zur Anwendung kommen (Sie können sehen, was über das Control Panel zwischengespeichert wird, BTW); auf UNIX ~/.java/deployment/Ordner wird für das Caching verwendet, ~/.java/sollte beschreibbar sein usw. – ArtemGr

+0

Es passiert jedem, der die Seite benutzt: [. Auf Windows-Rechnern habe ich durch das Java-Kontrollfeld geschaut und nur unter 'Temporäre Internetdateien-> Einstellungen' finden sich 'Caching'-Einstellungen. Diese Einstellungen sahen alle gut aus. Ich habe auch unter Temporary Internet Files-> View nachgesehen, um zu überprüfen, ob die betreffende .jar-Datei im Cache nicht vorhanden ist: [ –

4

ich das gleiche Problem hatte und einen Trick gefunden, die Server-Seite angewendet werden müssen. Es scheint, dass Gläser nicht zwischengespeichert werden, wenn ihr Mime-Typ falsch ist. Bitte überprüfen Sie Ihre Serverantwort mit dem Anwendung/Java-Archiv-MIME-Typ.

Ein anderes Problem, das ich fand, bezieht sich auf ein bestimmtes Glas. Mein Archivparameter listet viele Gläser auf, aber nur wenige wurden zwischengespeichert. Ich fand, dass alle Gläser bis zu einem bestimmten, wo zwischengespeichert wurde, alle verbleibenden Gläser wurden nicht im Cache gespeichert. Beim Laden Applet, ich habe "5" in seiner Java-Konsole und fand diese Nachricht direkt nach dem letzten zwischengespeicherten jar: Cache: signierten Eintrag fehlt aus jar. Ich weiß immer noch nicht, was mit dieser Datei los ist, aber ich habe dieses Jar am Ende der Archivparameterliste verschoben. Dies "repariert" das Problem.

1

Für mich hatte ich die Jar-Dateien aus dem Archiv-Tag zu entfernen und es nur im cache_archive Parameter hat, und geben Sie die Versionen auf diese Weise nicht für Datum der letzten Änderung auf den Server nicht huckepack

Fest Es in Firefox für mich

Verwandte Themen