如果img src指向不存在的文件,是否会阻止缓存中的404?
谢谢!
答案 0 :(得分:2)
当您的任何javascript运行以从DOM中删除图像时,图像标记已经被解析,并且加载图像URL的请求至少已排队并且可能已经发送。
如果在删除图像标记时尚未完成图像加载,浏览器是否足够智能以中止图像加载将是特定于浏览器的行为。它甚至可能已经完成。
您应该意识到,在解析DOM之前,javascript无法修改DOM。这意味着在你有机会用javascript修改它们之前,已经设置了像图像标签这样的东西。这只是浏览器设计的一个事实或限制。
如果您控制HTML并且有时在该位置需要不同的图像,那么最好不要将图像标记放在HTML中。当您的代码运行并确定它想要的图像时,它可以创建适当的图像标记并将其插入DOM。然后,浏览器不会花任何时间加载您不想要的图像。
如果你不在乎是否加载了额外的图像,只是想在设置正确的图像之前确保它没有显示错误的图像,那么将图像标记标记为display: none
或{{ 1}}直到您确定正确的img URL到位,然后才能使其可见。在解析标记之前处理CSS,以便在创建标记时应用CSS。
答案 1 :(得分: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点击。
答案 2 :(得分:0)
可能不是。在所有元素准备就绪后,Javascript在文档加载时运行。
答案 3 :(得分:0)
我不确定你在问什么,但是你会在dom中加载img
,浏览器将会获取它,即使它是display:none
。
(不确定每个浏览器,但它是以幻灯片形式缓存图像的方式)
此外,一旦你将它加载到你的dom上,无论你删除它,它都会在你的缓存中。