0

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

4

2 回答 2

1

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

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

于 2013-02-27T16:23:02.863 回答
0

可能已经解决了...

在服务器端,我依赖于用相同的文件名覆盖旧文件。我认为由于文件系统的滞后,浏览器有时能够在新文件可用之前抓取旧文件 - 即使就程序而言写入已完成。

我改了代码先删除旧的,然后服务器写入同名的新文件。这似乎阻止了浏览器抓取旧的,而是等待新的下来。Chrome 也不再多次列出该文件...

走着瞧。

于 2013-02-27T16:14:47.100 回答