Javascript上传和真实图像刷新/重新加载

时间:2013-11-20 18:49:57

标签: ajax image caching upload reload

我需要为特定项目创建一个通过Ajax工作的图像管理器(获取图像列表,显示它们......)。

新图像的上传或图像修改是通过Ajax脚本(使用新的JavaScript文件API)完成的。 上传工作正常,但我在图像修改时遇到问题:上传后浏览器显示的图像是缓存的图像而不是上传的图像!!

我知道这是一个经典的缓存问题,可以通过'imagesrc?new Date.getTime()'hack解决,但我不能在这里使用它。 实际上,这个hack并没有真正重新加载图像,它只是在缓存中创建了一个新的图像实例,与图像url'imagerc?new Date.getTime()'相关联。

因此,如果在任何时刻,进入图像管理器,我重新显示图像,而不向src添加'?new Date.getTime()',它将再次显示旧图像。 我要么不能系统地添加这个黑客(因为,例如,如果图像管理器需要显示很多非常重的图像,那么从浏览器缓存中获取它们直到它们被修改是有用的。)

我搜索了一种在互联网上解决这个问题的方法(在javascript上传之后真的替换了缓存的图像,而不是使用上面的hack),但我什么都没发现。

有没有办法做到这一点,还是完全不可能? 任何帮助或建议将不胜感激。

非常感谢提前

奥利弗

1 个答案:

答案 0 :(得分:0)

配置您的服务器以发送ETag-headers图片。

ETag是文件的哈希值,在修改文件时会更改。如果发送ETag,浏览器将在其下一个请求中添加If-None-Match - 包含该资源的最后一个收到的ETag的标头,如果没有任何更改或发送,服务器将以304: not modified响应以保存流量新文件(如果有的话)。