Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
哪种javascript加载选项对页面加载时间的影响可以忽略不计?_Javascript_Performance_Asynchronous - Fatal编程技术网

哪种javascript加载选项对页面加载时间的影响可以忽略不计?

哪种javascript加载选项对页面加载时间的影响可以忽略不计?,javascript,performance,asynchronous,Javascript,Performance,Asynchronous,假设我在服务器上的www.website.com/javascripts/application.js上托管了一个javascript文件,我希望第三方站点加载该文件 在这些第三方网站上,您只需添加: <script src="www.website.com/javascripts/application.js" type="text/javascript"></script> 但在完全加载页面之前,它需要评估所有javascript 相反,如果第三方网站 <

假设我在服务器上的
www.website.com/javascripts/application.js
上托管了一个javascript文件,我希望第三方站点加载该文件

在这些第三方网站上,您只需添加:

<script src="www.website.com/javascripts/application.js" type="text/javascript"></script>

但在完全加载页面之前,它需要评估所有javascript

相反,如果第三方网站

<script type="text/javascript>
  var script = document.createElement('script');
  script.setAttribute('type', 'text/javascript');
  script.setAttribute('src', 'www.website.com/javascripts/application.js');
  document.getElementsByTagName('head').appendChild(script);
</script>

第二个选项将异步加载脚本,页面可以在加载脚本之前显示。如果您正在优化页面显示时间,并且页面初始化脚本不需要使用您的脚本,那么这将是一个优势。如果在完全填充页面之前,其他所有内容都必须等待脚本加载,这可能是一个缺点(并且不会加快整个页面的加载速度)

因此,这实际上取决于脚本的功能。Google Analytics就是一个可以成功异步加载的完美例子,因为它是100%独立的。页面上没有其他内容依赖于它。加载的确切时间与页面显示无关

非同步加载不会带来真正好处的一个例子是,在显示初始内容时具有完整角色的脚本,或者具有在显示初始内容时具有完整角色的从属脚本的脚本。因为在所有内容都加载之前,您无法看到它们,所以将它们作为异步加载的一部分并没有真正的帮助


动态加载(您的最后一个选项)在您只希望在实际需要模块时(如果有)按需加载模块(页面加载时不一定)时最有用。

您的第二个选项将异步加载脚本,并且页面可以在加载脚本之前显示。如果您正在优化页面显示时间,并且页面初始化脚本不需要使用您的脚本,那么这将是一个优势。如果在完全填充页面之前,其他所有内容都必须等待脚本加载,这可能是一个缺点(并且不会加快整个页面的加载速度)

因此,这实际上取决于脚本的功能。Google Analytics就是一个可以成功异步加载的完美例子,因为它是100%独立的。页面上没有其他内容依赖于它。加载的确切时间与页面显示无关

非同步加载不会带来真正好处的一个例子是,在显示初始内容时具有完整角色的脚本,或者具有在显示初始内容时具有完整角色的从属脚本的脚本。因为在所有内容都加载之前,您无法看到它们,所以将它们作为异步加载的一部分并没有真正的帮助


动态加载(您的最后一个选项)是最有用的,当您只想在实际需要时(如果有的话)按需加载模块时(页面加载时不一定如此)。

尽管OP只是将正常的
脚本
标记放在页面的最底部,但它可能会延迟“dom就绪”类型的事件(以及窗口
load
event),它不会阻止页面呈现和响应。事实上,这就是通常的“如果可以的话,将脚本放在底部”建议(例如from)的全部要点,也是避免在可以的时候使用“dom就绪”类型事件的众多原因之一(你不能总是避开它们;例如,库经常不得不这样做,因为它们不知道将在哪里加载它们)。@t.J.Crowder-在页面底部加载脚本是否仍然会延迟页面的响应(尽管它不会延迟呈现)?毕竟,在所有正常事件发生之前,不能有任何javascript事件(非异步)脚本被加载。尽管OP只是将普通的
script
标记放在页面的最底部,尽管它可能会延迟“dom就绪”类型的事件(以及窗口
load
事件),但这并不会阻止页面被呈现和响应。事实上,这就是通常操作的全部要点“如果可以,请将脚本放在底部”的建议(例如来自),以及避免在可能的情况下使用“dom就绪”类事件的众多原因之一(您不能总是避免它们;例如,库经常不得不这样做,因为它们不知道将在哪里加载它们).@T.J.Crowder-在页面底部加载脚本是否仍然会延迟页面的响应(尽管不会延迟呈现)?毕竟,在加载所有常规(非异步)脚本之前,您不能有任何javascript事件。
<script src="www.website.com/javascripts/dynamic_loader.js" type="text/javascript"></script>