我有一个使用JavaScript动态加载图片并将其绘制到画布上的应用程序。这些图片可能会更改,但我也想利用缓存,因此我使用了最后修改的http头,并在图像未更改时发送304响应。这很好用,而且似乎正在工作...
但是有一件奇怪的事情发生了(目前只在OSX上的Chrome和Safari上进行过测试),偶尔浏览器会忽略某个图片请求!在脚本中,我创建了一个
最初的带有空缓存响应的请求具有以下标头:
但是有一件奇怪的事情发生了(目前只在OSX上的Chrome和Safari上进行过测试),偶尔浏览器会忽略某个图片请求!在脚本中,我创建了一个
new Image()
,并且onload
函数被触发,但是当我使用网络检查器时,请求根本没有被发出。我还可以确认服务器端没有收到请求。最初的带有空缓存响应的请求具有以下标头:
Connection:keep-alive
Content-Length:25937
Content-Type:image/png
ETag:Thu, 10 May 2012 20:48:13 GMT
Last-Modified:Thu, 10 May 2012 20:48:13 GMT
浏览器不应该每次都为这个图片发送新的请求吗,因为它有last-modified头信息?当我进行测试时,浏览器似乎每分钟只会发送一次新的请求(无论我尝试加载多少个相同的图片)... 这是预期行为吗?是否有某些头信息组合可以强制浏览器每次都检查图片是否被修改?或者也许有一些JavaScript魔法可以解决这个问题?
var img = new Image(); img.onload = function () { /* ... */ }; img.src = "someimage.png";
- lakenen