Html 如果一个页面上包含两次(或更多)外部包含的文件(如JavaScript或CSS),是否会有两个(或更多)web请求?

Html 如果一个页面上包含两次(或更多)外部包含的文件(如JavaScript或CSS),是否会有两个(或更多)web请求?,html,performance,http,browser,caching,Html,Performance,Http,Browser,Caching,比如说,由于有条件的注释或只是粗心,某些浏览器甚至所有浏览器的用户都会看到相同的包含文件。例如: <!--[if lte IE 8]> <script src="mygreatincludefile.js" type="text/javascript"></script> <![endif]--> <!--[if lte IE 6]> <script src="mygreatincludefile.js" t

比如说,由于有条件的注释或只是粗心,某些浏览器甚至所有浏览器的用户都会看到相同的包含文件。例如:

<!--[if lte IE 8]>
     <script src="mygreatincludefile.js" type="text/javascript"></script>
<![endif]-->

<!--[if lte IE 6]>
     <script src="mygreatincludefile.js" type="text/javascript"></script>
<![endif]-->

当呈现页面时,浏览器会知道不必再次抓取该文件,或者会发出请求,并且浏览器将返回304(未修改)。最好的情况似乎是第一种,可接受的情况似乎是第二种选择,而最坏的情况是,由于浏览器还不知道它刚刚抓到了这个,所以需要发出新的请求


你对这类事情有第一手的经验吗?你希望发生什么?你观察到发生了什么?我是否应该不担心这一点,并在记住可能是我的情况下对做这件事的人施以重拳打击?

在大多数用户代理(包括IE)中,文件应该提取一次,但在JavaScript的情况下,代码将执行两次。最好的例子是
标记。图像将加载一次,但可以多次使用

至于你的例子。做两次同样的手术似乎是徒劳的。您基本上是说“如果小于或等于IE8”,然后继续加载相同的文件“如果小于或等于IE6”,如果触发第一条规则,它将自动加载该文件。

查看如何调试您的http活动。在ie6/7(ie8有自己的)或FireFox中也有相同的功能

这将使您能够查看您的请求,并确认您的假设和其他人的响应


现在,根据是否指定了任何http头来通知浏览器不要缓存任何内容,假设只有一个请求会针对磁盘上不存在的资源发出。上述实用程序将能够为您确认这一点。

当相同的CSS文档以这种方式包含两次时,Chrome Inspector将显示给定CSS元素的重复和冗余条目。但我不确定这会如何影响浏览器的性能


我知道。我知道它在做什么。我只是想提出这个问题,因为我在这里没有看到这个问题,这是最近的一个大话题。我还想知道我应该对自己有多恼火(当然,如果我真的这么做的话)。谢谢