2

我正在尝试将图片上传到服务器。上传完成后,页面会自动刷新。在 FF、Chrome 等中一切都很好,但在 IE 中,新页面没有用新照片更新。此行为是设计使然:http: //support.microsoft.com/kb/237885

有没有办法在 jQuery.submit 之后强制进行硬刷新?

4

2 回答 2

3

您可以将您的网络服务器设置为为该特定图像发出无缓存标头;但这会影响每个客户的每个请求,因此并不理想。

最好的解决方案是更改资源的 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;
    });
});
于 2012-11-09T00:08:35.140 回答
1

将带有时间戳的查询字符串添加到图像 url,如下所示:

<img src="/path/to/image.jpg?1234567890"/>

这将强制清除所有浏览器缓存。

于 2012-11-09T00:09:32.257 回答