查看以下代码。 Chrome会在调试控制台中记录一个请求。如果这是因为缓存,为什么它不记录两个请求,最后一个是304?
是什么解释了这种浏览器行为?
<script>
new Image().src="//stackoverflow.com/"
new Image().src="//stackoverflow.com/"
</script>
答案 0 :(得分:3)
浏览器已经下载了图片,为什么要再次请求同一张图片?如果图像在页面上多次使用(定期发生),则对每个实例使用单独的请求会产生大量不必要的开销。假设同一页面中具有相同URL的两个图像是相同的图像。
答案 1 :(得分:2)
您要求两次相同的图像。该行为实际上在HTML5规范中描述。引用:
如果资源由绝对URL标识,并且资源是 使用幂等操作(例如HTTP GET或 等效),并且由于其他原因已经下载了 (例如,此算法的另一个调用),此请求将是 与前一个相同(例如,同一
Accept
和Origin
标题),并且配置用户代理以使其重用 来自现有下载的数据而不是启动新数据, 然后使用现有下载的结果而不是开始 新的。
HTML5 > Common infrastructure > Fetching resources > Processing model
基本上它说如果你多次请求完全相同的资源,浏览器只会下载一次(或者根本不下载它而是从缓存中提供)。
相反规格的相关规格: