是否使用HTML正文下载了JavaScript文件

时间:2015-08-12 12:38:37

标签: javascript java-ee

我有一个Java Web应用程序,我想知道是否使用HTML-body下载了javascript文件,或者如果首先加载了html主体,那么浏览器会请求所有JavaScript文件。

这个问题的原因是我想知道导入jQuery.getScript()的文件是否会导致较差的性能。我想使用该JQuery函数导入所有文件,以避免重复JavaScript导入。

4 个答案:

答案 0 :(得分:1)

首先检索html文档的正文。下载完成后,浏览器会检查需要检索哪些资源并获取这些资源。

如果您打开Chrome开发者控制台,转到网络标签(确保禁用缓存并保留日志)并且只刷新页面,您实际上可以看到这种情况。 Example of Body loading then scripts

第一个绿色栏是页面加载,第二个块是脚本,样式表和一些图像资源

答案 1 :(得分:0)

首先下载HTML文档,只有在浏览器下载完HTML文档后才能找到要获取的脚本

也就是说,不会直接影响HTML正文外观的繁重脚本应该加载到正文的末尾而不是头部,这样除非必要,否则它们不会阻止渲染

答案 2 :(得分:0)

  

我想知道在请求期间是否使用html正文下载了javascript

如果它是该机构的一部分,那么是。如果它在一个单独的资源中,那么没有。

例如,假设您的HTML文件包含以下内容:

<script type="text/javascript">
    $(function () {
        // some code here
    });
</script>

作为HTML文件一部分的代码包含在HTML资源中。网络服务器无法区分文件中的代码类型,它只是响应响应,无论其中有什么。

另一方面,如果你有这个:

<script type="text/javascript" src="someFile.js"></script>

在这种情况下,代码不在同一文件中。 HTML只是引用包含代码的单独资源(someFile.js)。在这种情况下,浏览器会单独请求资源。导致总共有两个请求。

答案 3 :(得分:0)

首先下载HTML文档,或者至少先开始下载。在解析时,任何脚本都包含浏览器找到的脚本。这意味着某些脚本可能在文档完全加载之前完成加载。

在下载文档时,浏览器会对其进行解析并尽可能多地显示。当解析到达脚本包括时,解析停止并且浏览器将暂停它直到脚本被加载并执行,然后解析继续。这意味着

如果您拨打getScript而不是脚本包含,则行为会发生变化。该方法发出异步请求,因此浏览器将在脚本加载时继续解析页面的其余部分。

这有一些重要的影响:

  • 页面解析将提前完成。
  • 脚本将不再按特定顺序运行,它们按照加载完成的顺序运行。
  • 如果一个脚本依赖于另一个脚本,则必须先检查第一个脚本是否已实际加载,然后才能在另一个脚本中使用它。

您可以使用脚本包含和getScript调用的组合来获得最佳效果。您可以使用常规脚本包括其他脚本所依赖的脚本,并getScript用于不受该方法影响的脚本。