我在上传后刷新页面上的图片时遇到问题。我将多部分图像发布到隐藏的iframe。然后我使用javascript回调来更改原始图像。它有时有效,但并非总是如此。
这不是缓存问题,因为我尝试在没有效果的情况下附加到URL。它在Chrome和Firefox之间也是一致的,所以我不怀疑浏览器。
在所有情况下,如果我刷新整个页面,那就是正确的。
如果我使用Chrome检查元素,它似乎将图像显示为数组?有人可以解释一下发生了什么吗?
由于
上传servlet以(在iframe中)结束:
<script>parent.changeImage('/cdn/orig/prof-1.gif')</script>
哪个电话:
function changeImage(image){
$("#store-image").attr('src', '');
var ts = new Date().getTime();
$("#store-image").attr('src', image+"?"+ts);
}
然后在几次加载后,Chrome检查显示:
Frames
file.jsp
images
image-1.gif
image-1.gif
image-1.gif
image-1.gif
image-1.gif
每个旁边都有一个不同的缩略图。
为什么javascript构建一个数组?
答案 0 :(得分:1)
为什么不在每次上传时更改图像名称?你所面临的问题,实际上只是冰山一角。 Web服务器会缓存静态内容,刷新此缓存需要一些时间。有些浏览器会持久地缓存statiic内容。一些缓存代理也做同样的事情。
如果您不想更改文件名,请至少向img src添加一些递增参数。喜欢myimage.gif?1235698
答案 1 :(得分:0)
可能已经解决了......
在服务器端,我依赖于使用相同的文件名覆盖旧文件。我认为由于文件系统的滞后,浏览器有时能够在新文件可用之前获取旧文件 - 即使编写程序完全与程序有关。
我先将代码更改为删除旧代码,然后服务器使用相同的名称编写新文件。这似乎阻止浏览器抓住旧的,而是等待新的浏览器关闭。 Chrome不再多次列出该文件...
我们会看到。