我有一个Java Web应用程序,我想知道是否使用HTML-body下载了javascript文件,或者如果首先加载了html主体,那么浏览器会请求所有JavaScript文件。
这个问题的原因是我想知道导入jQuery.getScript()的文件是否会导致较差的性能。我想使用该JQuery函数导入所有文件,以避免重复JavaScript导入。
答案 0 :(得分:1)
首先检索html文档的正文。下载完成后,浏览器会检查需要检索哪些资源并获取这些资源。
如果您打开Chrome开发者控制台,转到网络标签(确保禁用缓存并保留日志)并且只刷新页面,您实际上可以看到这种情况。
第一个绿色栏是页面加载,第二个块是脚本,样式表和一些图像资源
答案 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
用于不受该方法影响的脚本。