簡體   English   中英

Java Applet沒有緩存

[英]Java Applet not caching

我遇到了一個我已部署的Java applet的問題,它拒絕緩存在jvm的“粘性”緩存(或瀏覽器)中。 出於某種原因,每次用戶加載此applet所在的頁面時,jvm會從服務器重新下載jar文件,這會導致長時間的延遲。

包含applet的網頁正在通過互聯網訪問,因此根據Sun的Java applet文檔,我使用的是<applet>標簽,而不是<object><embed>標簽。

任何幫助調試或識別問題將非常感激。

以下是我正在使用的完整applet標記:

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

我有同樣的問題,發現需要應用服務器端的技巧。 如果他們的mime類型不正確,似乎沒有緩存jar。 請使用application / java-archive mime類型檢查服務器回復。

我發現的另一個問題與特定的罐子有關。 我的歸檔參數列出了許多jar,但只有少數緩存。 我發現所有罐子都是緩存的特定罐子,所有剩余的罐子都沒有緩存。 在加載applet時,我在其java控制台中按了“5”,並在jar中找不到最后一個緩存的jar:cache:signed條目后發現此消息。 我仍然不知道這個文件有什么問題,但我在存檔參數列表的末尾移動了那個jar。 這個“修復”了這個問題。

我個人通過使用http://java.sun.com/javase/6/docs/technotes/guides/plugin/developer_guide/applet_caching.html中記錄的 cache_archive和cache_version參數解決了緩存問題。

我的cache_version基於實際的文件修改日期,例如

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

並與MSIE合作,它看起來像:

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

這篇官方文章介紹了如何更改APPLET標記以增加緩存:

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

對我來說,我不得不從Archive標簽中刪除Jar文件,只需將它放在cache_archive參數中,並指定版本,使其不會在最后修改日期重新回到服務器

在我的Firefox中修復了它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM