0

如果 img src 指向一个不存在的文件,那会阻止缓存中的 404 吗?

谢谢!

4

4 回答 4

2

当您的任何 javascript 运行以从 DOM 中删除图像时,图像标签已经被解析并且加载图像 URL 的请求至少已经排队并且可能已经发送。

如果在删除图像标签时尚未完成,浏览器是否足够智能以中止图像加载,这将是特定于浏览器的行为。它甚至可能已经完成。

您应该意识到,在 DOM 被解析之前,javascript 无法修改 DOM。这意味着在您有机会使用 javascript 修改它们之前,已经设置了图像标签之类的东西。这只是浏览器设计的事实或限制。

如果您控制 HTML 并且有时想要在该位置使用不同的图像,那么最好不要将图像标记放在 HTML 中。当您的代码运行并确定它想要哪个图像时,它可以创建适当的图像标签并将其插入 DOM。然后,浏览器不会花任何时间加载您不想要的图像。

如果您不关心是否加载了额外的图像,并且只是想在设置正确的图像之前确保它不会显示错误的图像,那么将图像标记标记为display: noneorvisibility: hidden直到您确定正确的 img URL就位,然后您可以使其可见。CSS 在标签被解析之前被处理,所以它在标签被创建时被应用。

于 2012-04-13T02:17:27.860 回答
1

为什么不测试一下?

这是一个小提琴:http: //jsfiddle.net/atFtS/和来源:

<img src="http://www.asdfghjkl.com/qwerty.png" style="display:none" />​

打开您的浏览器检查器(我使用的是 Chrome),转到网络选项卡,看看会发生什么。

它确实尝试加载图像,即使它不会被渲染。

这是另一个小提琴: http: //jsfiddle.net/atFtS/1/我在其中添加:

$('img').remove();​

它仍然加载图像并且可能缓存了 404 命中。

于 2012-04-13T02:13:03.363 回答
0

可能不是。在所有元素都准备好之后,Javascript 在文档加载时运行。

于 2012-04-13T02:05:03.230 回答
0
  1. 我不确定你在问什么,但你会img在 dom 中加载,浏览器会获取它,即使它的display:none. (不确定每个浏览器,但它是在幻灯片中缓存图像的方式)

  2. 此外,一旦你将它加载到你的 dom 上,无论你删除它,它都会在你的缓存中。

于 2012-04-13T02:18:00.760 回答