1

我有一个 phonegap Android 应用程序,它使用该FileTransfer元素从服务器下载图像。我将图像保存在root.fullPath + "/namefile.jpg". 然后,如果应用程序在线,我保存图像,然后将图像的src属性设置为文件系统中图像的源,如果应用程序离线,我直接从文件系统中获取图像。

问题就在这种情况下;当服务器中的图像发生变化时,我再次下载它,但它仍然显示旧图像。然后,如果我关闭应用程序并再次打开它,它会加载正确的新更改图像。

这是代码

ft.download(
    uri,
    fs.root.fullPath+"/filename",
    function(entry) {
        alert("download complete: " + entry.fullPath);
        urlNuevo=entry.fullPath;
        $("#my_image").attr("src",entry.fullPath);//here is the problem it still shows the previous version of the image
    },
    function(error) {
        alert("download error source " + error.source);
        alert("download error target " + error.target);
        alert("upload error code" + error.code);
        urlNuevo= fs.root.fullPath+"/filename"
        $("#my_image").attr("src",fs.root.fullPath+"/filename");
    }

);
4

1 回答 1

1

浏览器正在根据 url 缓存图像。

如果您使用桌面 Safari 对本地 html 文件执行相同操作并手动换出图像文件,也会发生这种情况。除非您点击重新加载,并且只是再次访问该页面,否则浏览器将使用缓存版本。

您可以通过添加随机查询参数来使图像 url 唯一,否则会被忽略/无害。如果您有某种方法可以跟踪修订或修改日期,请改用它。

<img id="i" src="test.png" />
<script>
document.getElementById("i").src += "?_r=" + Math.random();
</script>
于 2013-04-05T21:17:22.017 回答