我有一个应用程序可以使用 JavaScript 动态加载图像并将它们绘制到画布上。图像可以更改,但我也想利用缓存,因此我使用最后修改的 http 标头并在未修改图像时发送 304 响应。这一切都很好,而且似乎正在工作......
但是发生了一件奇怪的事情(目前只在 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
浏览器不应该每次都对该图像发出新请求,因为它具有最后修改的标头吗?当我运行测试时,浏览器似乎每分钟左右只发出一个新请求(无论我尝试加载多少相同图像的副本)......这是预期的行为吗?是否有一些标题组合会强制浏览器每次检查图像是否被修改?或者也许一些 JavaScript 魔法可以解决问题?