2

サーバー上で画像が更新された場合、ページ上の画像を再読み込みしたい。他の質問では、次のようなことをすることが提案されています

newImage.src = "http://localhost/image.jpg?" + new Date().getTime();

画像を強制的に再読み込みしますが、実際には変更されていない場合でも再度ダウンロードされることを意味します。

If-Modified-Since実際に変更された場合にのみ画像がダウンロードされるように、適切なヘッダーを使用して同じ画像の新しい要求を生成する Javascript コードはありますか?

更新: 私はまだ混乱しています: 典型的な URL を要求すると、ローカルにキャッシュされたコピーが取得されます。(サーバーにキャッシュ不可としてマークを付けない限り、しかし、実際に変更しない限り再ダウンロードしないことが全体の考えであるため、そうしたくありません。)URLを変更すると、常に再新しい URL のポイントはキャッシュを壊すことなので、ダウンロードしてください。では、ローカルにキャッシュされたコピーと一致しない場合にのみファイルをダウンロードするなど、必要な中間動作を取得するにはどうすればよいでしょうか?

4

2 に答える 2

1

xhr.setRequestHeader()メソッドを見てください。これは任意の XMLHttpRequest オブジェクトのメソッドであり、Ajax クエリにヘッダーを設定するために使用できます。jQuery では、簡単にbeforeSendajax オブジェクトにプロパティを追加し、そこにいくつかのヘッダーを設定できます。

そうは言っても、Ajax を使用したキャッシングには注意が必要です。ブラウザのキャッシュ メカニズムをオーバーライドしようとすると、いくつかの問題が発生するため、Google グループのこのスレッドを参照することをお勧めします。このようなものを機能させるには、サーバーが適切なキャッシュ制御ヘッダーを返すことを確認する必要があります。

于 2009-12-14T19:54:32.903 に答える
1

Javascript はサーバー上のイベントをリッスンできません。代わりに、何らかの形式のロング ポーリングまたはサーバーへの順次呼び出しを使用して、イメージが変更されたかどうかを確認できます。

于 2009-12-14T19:43:59.107 に答える