3

アプレットのキャッシュを更新しようとしています。アプレットは適切にキャッシュされますが、その後、キャッシュがどれほど古くなっても、更新されません。キャッシュを手動で削除すると、次のページの読み込み時に新しいキャッシュが作成され、キャッシュしようとしている.jarファイルへのすべての変更が有効になります。ただし、これを行う必要があることは受け入れられません。

次のように、インデックスファイルでcache_archiveをcache_versionと組み合わせて使用​​してみました。

if (navigator.appVersion.indexOf("Win")!=-1){
    var attributes = { id:'manager', code:'HardwareManagerApplet_FileWriter',          width:1, height:1} ;
    var parameters = {jnlp_href: '/java/HardwareManagerApplet.jnlp', codebase: '/java/hardwaremanager.jar', cache_archive:'hardwaremanager.jar',  cache_version:'0.0.0.7'};
    check = deployJava.runApplet(attributes, parameters, '1.6');
    hardware_enabled = true
    console.log("Applet started")
}

これは効果がありません。cache_archiveとcache_versionを属性に移動し、さまざまな順列として使用しようとしました。cache_optionを最初のブラウザに設定してから、プラグインに設定してみました。サイコロはありません。私はETagを調べましたが、それが最善の解決策になるとは確信していません。last-Modifiedも調べましたが、A)キャッシュが更新されるようにhttpに実装する方法がわかりません。また、B)そのルートに移動する必要がある場合は、まったく新しい缶が開きます。

他に合理的な代替手段はありますか?さらに良いことに、私は単にcache_archive et alを誤って実装していますか?

実際、ページが読み込まれるたびにキャッシュすることができたとしても、満足するでしょう。

助けてくれてありがとう!

編集:についてのコードのブロックは、私がcache_archiveなどで作成した唯一の実装です。他の場所に数行入れる必要がありますか?Oracleのドキュメントに関する限り、それがあまり明確であるとは思いませんでした。

4

2 に答える 2

2

キャッシュオプションのパラメータが不足しているのは次のとおりです

cache_option属性は、次の3つの値のいずれかを取ることができます。

  • いいえ-アプレットのインストールを無効にします。常にWebサーバーからファイルをダウンロードしてください。
  • ブラウザ-ブラウザのキャッシュからアプレットを実行します(デフォルト)。
  • プラグイン-新しいJavaプラグインキャッシュからアプレットを実行します。

デフォルトでブラウザを使用する場合、更新された値を有効にするには、ブラウザのキャッシュをクリアする必要があります。プラグインを使用して、実装するバージョン管理を最大限に活用します。

于 2011-07-12T16:13:45.543 に答える
0

アプレットのキャッシュは、仮想マシン(JVM)とブラウザの両方の作業です。ブラウザとJVMは、パフォーマンスを目的としてアプレットをキャッシュするように最適化されています。

私の解決策は両方の1つでした:

  1. クラスがビルドされるたびに仮想マシンのキャッシュをクリアします。Javaコンソールを開き、x(ClassLoader-Cache clear)と入力します。次に、ブラウザを更新します。また
  2. ブラウザを閉じて、すべてやり直してください

私は解決策1を好みます。

于 2011-07-24T22:51:34.427 に答える