サーバーに画像をアップロードしようとしています。アップロードが完了すると、ページが自動的に更新されます。FF、Chrome などではすべて問題ありませんが、IE では新しいページが新しい写真で更新されません。この動作は仕様です: http://support.microsoft.com/kb/237885
jQuery.submit の後にハード リフレッシュを強制する方法はありますか?
サーバーに画像をアップロードしようとしています。アップロードが完了すると、ページが自動的に更新されます。FF、Chrome などではすべて問題ありませんが、IE では新しいページが新しい写真で更新されません。この動作は仕様です: http://support.microsoft.com/kb/237885
jQuery.submit の後にハード リフレッシュを強制する方法はありますか?
その特定の画像のキャッシュなしヘッダーを発行するように Web サーバーを設定できます。しかし、それはすべてのリクエストですべてのクライアントに影響を与えるため、理想的ではありません。
最善の解決策は、リソースの URL を変更することです。JavaScript またはサーバー上で。URL にクエリ文字列を追加するだけで、強制的に更新できます。たとえば、次のように変更します。
/my_image.jpg
に
/my_image.jpg?version=2
数値を生成するには、タイムスタンプ ( (new Date()).getTimestamp()
JavaScript の場合) または乱数 ( Math.random() * 1000000
) を使用できます。
完全な JavaScript ソリューションは、更新する画像 (例: force-reload
) にクラスを追加し、代わりに をプロパティsrc
として配置することです。data-
<img class="force-reload" data-src="/my_image.jpg"/>
次にjQueryで:
$(document).ready(function () {
var now = (new Date()).getTime();
$('img.force-reload').prop('src', function () {
return $(this).data('src') + "?" + now;
});
});
次のように、タイムスタンプ付きのクエリ文字列を画像の URL に追加します。
<img src="/path/to/image.jpg?1234567890"/>
これにより、すべてのブラウザのキャッシュが強制的にクリアされます。