0

クライアントのブラウザに、新しい Java アプレットを含む新しいバージョンの HTML ページをロードさせるにはどうすればよいですか?

現場でシステムを更新しましたが、クライアントが Web サーバーに接続したときに、(キャッシュから) 古い Java アプレットがまだ表示されていました。

クライアントがキャッシュからのバージョンではなく、新しいバージョンをロードするように (できればサーバー側から) 強制するにはどうすればよいですか?

古いシステム (アップグレード前) :

  • 古い Linux バージョン (10 年以上前)
  • 古い Apache Web サーバー (10 年以上前)
  • 古い Java アプレット (別のクラス ファイル) (約 2 年前)
  • Web サーバーのルート ディレクトリにある古い index.html (約 2 年前)

新しいシステム (アップグレード後) :

  • 旧システムと同じIPアドレスとポート
  • Windows XP 組み込み
  • Apache/2.2.21 (win32) ウェブサーバー
  • jar ファイル内の新しい Java アプレット (古いバージョンとはすべて異なるクラス名)
  • Web サーバーのルート ディレクトリに新しい index.html

ユーザーは Windows XP マシンで Chrome を使用しています

ユーザーが Firefox でページをロードすると、新しい Java アプレットが表示され、問題なく動作しました。(彼は古い Java アプレットを Firefox にロードしたことはありません)

[編集]

looper から httpd.conf に行を追加してもエラーは発生しませんでしたが、それが機能するかどうかはわかりません...

クライアントのキャッシュの問題を再現できないようです。アプレットで何かを変更して別のコンピューターから再度ロードすると、何も変わりませんが、数分後に再ロードすると、新しいバージョン.. CacheDisable を使用した余分な行の有無にかかわらず

httpd.confで「キャッシュ」を検索すると、次のものがすべて見つかります。

#LoadModule cache_module modules/mod_cache.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so

キャッシュが有効になっていないようですか?

CacheDisable を単独で (IfModule なしで) 行を追加すると、Apache が起動しないため、おそらく httpd.conf が破損しますか?

[編集2]

サーバー OS、Web サーバー、Java クラス名、および index.html を除くすべてのファイル名が古いバージョンと異なるため、問題の原因はキャッシュされた index.html に違いありません。FrancescoMM の回答からメタ タグを index.html に追加しました。これにより、将来のリリースで問題が回避されることを願っています。

4

3 に答える 3

1

Java クラスが異なる場合、インデックス ファイルはキャッシュにあるファイルです。クライアントのプロキシ キャッシュである可能性もあるため、サーバーで操作しても結果はありません。

最も速い解決策は、新しい URL をクライアントに送信することです。

http://www.site.com/index.html?random_param=1234
http://www.site.com/?random=1234
http://www.site.com/?1234
http://www.site.com/?new

または単に

http://www.site.com/?

十分なはずです。

編集

また、すべてのプラグマ no cache および有効期限のメタ タグを HTML ページに追加しようとしましたか? とにかく、クライアントプロキシにページをリロードするように指示する必要があります。

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 22 Jul 2002 11:12:01 GMT">

EXPIRES は意図的に古い日付に設定されていることに注意してください。今回はこれで問題が解決しない場合があります。新しいインデックスがロードされていない場合、誰も (サーバー、プロキシ、クライアント) は新しいタグを認識しませんが、次回ページがロードされるたびに確認します。

于 2012-11-28T14:00:15.010 に答える
1

サーバーの指示に基づいてアプレット自体を無効にする機能を追加しない限り、クライアント側からリセットする必要があります。提供された情報から、ブラウザのキャッシュをクリアする必要があります。すべてのブラウザには、キャッシュをクリアする方法があります。それよりも短い方法はないと思います。

すべてのシステムは、最初に展開された瞬間にレガシー システムになります。アップグレードを計画することは常に良い考えです。少なくとも、サーバー通信を行うアプレットは、そのバージョン番号をサーバーに報告し、サーバーがサービスを拒否したり、アップグレードを開始したり、ユーザーに通知したり、その他の適切なことを実行できるようにする必要があります。

于 2012-11-23T15:34:38.913 に答える
0

httpd.conf で Apache の no-cache を強制するだけです。

apache-docs から:

<IfModule mod_cache.c>
    CacheDisable /local_files
</IfModule> 

すべてのローカル ファイルのキャッシュを無効にする代わりに、アプレット ファイルへの完全なパスを指定できます。

于 2012-11-22T14:25:43.663 に答える