从开发人员工具查看时,如果脚本被下载两次,这是正常的吗?

for*_*own 7 html javascript

在我正在调试的Web应用程序中,索引页面如下所示.

<head>
    <base href="/">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="renderer" content="webkit" />
    <meta http-equiv="expires" content="0" />
    <meta http-equiv="cache-control" content="no-cache" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
    <link rel='stylesheet' href='u.css?1456217719620'></link>
    <link rel='stylesheet' href='ll.css?1456217719620'></link>
    <link rel='stylesheet' href='aa.css?1456217719620'></link>
    <script src='c.js?NaN'></script>
    <link rel="shortcut icon" href="/images/favicon.ico" />

    <script src='ll1.js?1456217719620'></script>
    <script src='ll2.js?1456217719620'></script>
    <script src='ll3.js?1456217719620'></script>
    <script src='ll4.js?1456217719620'></script>
    <script src='ll5.js?1456217719620'></script>
    <script src='ll6.js?1456217719620'></script>
    <script src='aa.js?1456217719620'></script>
</head>

<body>
    <!-- Edit: As suggested in one of the reply, could it be because there are scripts like this in body? -->
    <script type="text/javascript">
      (function() {
        var u='//widget.uservoice.com/xxxxx.js';
        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
        g.type='text/javascript'; g.async=!1; g.defer=!0; g.src=u; s.parentNode.insertBefore(g,s);
      })();
      UserVoice = window.UserVoice || [];
    </script>

</body>
Run Code Online (Sandbox Code Playgroud)

一些脚本在开发人员工具中出现两次(Chrome,见下图)

在此输入图像描述

对于第二个请求,有时两者都是200而不是304.

这是正常的吗?

什么可能导致它有时出现两次,有时它只出现一次?

[编辑1]它不同于这个问题"304 Not Modified"如何工作?它并不总是显示304,有时两者都是200响应.这可能与HTML和javascript的编写方式有关,而不是主持人建议的偏离主题.

在此输入图像描述

甚至nginx也记录了两次请求

[23/Feb/2016:21:56:09 -0500] "GET /ll1.js?1456217719625 HTTP/1.1" 200 220276
[23/Feb/2016:21:56:09 -0500] "GET /ll1.js?1456217719625 HTTP/1.1" 200 220284
Run Code Online (Sandbox Code Playgroud)

[编辑2]我认为它可能与"大"文件请求有关?因为如下图所示,我试图加载几个javascript文件,其中一些是几MB的大小.我没有在javascript中做太多,大多数较小的文件只包含"console.log()",较大的版本只是"var xxx = ['Large Array'];"

在此输入图像描述

Zam*_*ara 2

如果你的Javascript代码修改了DOM并添加了新<script>节点,浏览器将加载src属性中指向的新脚本。所以这是可能的。但是,如果 Web 服务器表示未修改(代码 304),则可以从浏览器缓存提供第二个请求。