JavaScript在这种情况下的表现如何?

时间:2009-10-30 19:03:10

标签: javascript

出于速度目的,我正在尝试决定是将JavaScript放在<head>中还是放在我网站的</body>之前。我更喜欢头部而不关心额外的HTTP请求,只关心这个脚本的行为。

以下是两个代码片段,它们是背靠背加载的(Google Analytics):

脚本1:

// Loaded externally:
// <script type="text/javascript" src="google_analytics_1.js"></script>

var gaJsHost = (
    ( "https:" == document.location.protocol ) ?
    "https://ssl." :
    "http://www."
);

document.write( unescape(
    "%3Cscript src='" +
    gaJsHost +
    "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"
) );

脚本2:

// Loaded externally:
// <script type="text/javascript" src="google_analytics_2.js"></script>

try {
    var pageTracker = _gat._getTracker( "UA-0000000-0" );
    pageTracker._trackPageview();
}
catch( err ) { }

使用上面的代码,JavaScript是否延迟发送页面的其余部分,直到它检索ga.js,或者是否代之以说“好吧,我已经排队等待ga.js的请求,现在我将继续发送页面的其余部分,等待它下载到客户端...“?

我的直觉告诉我它是线性的,并且页面将被延迟,直到客户端完全下载ga.js为止。是吗?

2 个答案:

答案 0 :(得分:0)

NOP。它不会延迟。它将排队第一个请求并继续第二个请求,实际上它是处理它的浏览器。

答案 1 :(得分:0)

在加载ga.js文件时,页面的解析将暂停,但服务器将继续发送页面的其余部分。当脚本加载并执行后,它将继续显示页面的其余部分。

因此,脚本和页面的其余部分将并行加载,但在处理完脚本之前,它不会触及页面的任何其余部分。