2013-11-20 39 views
1

我需要为特定项目创建一个通过Ajax工作的图像管理器(以获取图像列表,显示它们......)。Javascript上传和实时图像刷新/重新加载

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

我知道这是一个经典的缓存问题,可以通过'imagesrc?new Date.getTime()'破解来解决,但是我不能在这里使用它。实际上,这种黑客并没有真正重新加载图像,它只创建一个新的图像实例到缓存中,关联到图像url'imagesrc?new Date.getTime()'。因此,如果在任何时候进入图像管理器,我会重试显示图像,但不向src添加'?new Date.getTime()',它会再次显示旧图像。 而且我不能系统地添加这个黑客(因为,例如,如果图像管理器需要显示大量非常沉重的图像,那么将它们从浏览器缓存中取出直到它们被修改)是非常有用的。

我搜索了一种方法来解决在互联网上的这个问题(真正取代了JavaScript上传而不是使用上面的黑客后缓存的图像),但我什么也没找到。

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

提前

奥利维尔

回答

0

非常感谢您配置服务器发送ETag-headers的图像。

ETag是修改文件时发生更改的文件的哈希值。如果发送了ETag,浏览器将在其下一个请求中添加一个If-None-Match-包含该资源的最后一个收到的ETag的标题,如果没有改变,服务器将响应304: not modified以节省流量,或者如果有新文件则发送新文件。