新文件上传后jQuery刷新图像

时间:2013-02-26 17:47:42

标签: javascript jquery image

我在上传后刷新页面上的图片时遇到问题。我将多部分图像发布到隐藏的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构建一个数组?

2 个答案:

答案 0 :(得分:1)

为什么不在每次上传时更改图像名称?你所面临的问题,实际上只是冰山一角。 Web服务器会缓存静态内容,刷新此缓存需要一些时间。有些浏览器会持久地缓存statiic内容。一些缓存代理也做同样的事情。

如果您不想更改文件名,请至少向img src添加一些递增参数。喜欢myimage.gif?1235698

答案 1 :(得分:0)

可能已经解决了......

在服务器端,我依赖于使用相同的文件名覆盖旧文件。我认为由于文件系统的滞后,浏览器有时能够在新文件可用之前获取旧文件 - 即使编写程序完全与程序有关。

我先将代码更改为删除旧代码,然后服务器使用相同的名称编写新文件。这似乎阻止浏览器抓住旧的,而是等待新的浏览器关闭。 Chrome不再多次列出该文件...

我们会看到。