我正在尝试将图片上传到服务器。上传完成后,页面会自动刷新。在 FF、Chrome 等中一切都很好,但在 IE 中,新页面没有用新照片更新。此行为是设计使然:http: //support.microsoft.com/kb/237885
有没有办法在 jQuery.submit 之后强制进行硬刷新?
我正在尝试将图片上传到服务器。上传完成后,页面会自动刷新。在 FF、Chrome 等中一切都很好,但在 IE 中,新页面没有用新照片更新。此行为是设计使然:http: //support.microsoft.com/kb/237885
有没有办法在 jQuery.submit 之后强制进行硬刷新?
您可以将您的网络服务器设置为为该特定图像发出无缓存标头;但这会影响每个客户的每个请求,因此并不理想。
最好的解决方案是更改资源的 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"/>
这将强制清除所有浏览器缓存。