Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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_Yslow - Fatal编程技术网

Javascript 是";将脚本放在底部“;对的

Javascript 是";将脚本放在底部“;对的,javascript,performance,yslow,Javascript,Performance,Yslow,在提高网站性能的最佳实践中,Steve Souders提到了一条规则“将脚本移到底部”。这有点令人困惑。事实上,我注意到很多网页没有将脚本放在底部,但仍然为这些页面标记了一个 所以,我什么时候应该遵循“将脚本放在底部”的规则呢?有时候,您别无选择,只能将脚本放在页面中的特定位置。但是,如果您将脚本放在页面底部,浏览器将不会中断其渲染以加载JS引擎来处理脚本(如果循环运行了很多次,这可能会很昂贵),并且可能会更快地显示页面的早期视图。我不确定这是否是性能问题(可能是),但我当时在微软的一次演示会上

在提高网站性能的最佳实践中,Steve Souders提到了一条规则“将脚本移到底部”。这有点令人困惑。事实上,我注意到很多网页没有将脚本放在底部,但仍然为这些页面标记了一个


所以,我什么时候应该遵循“将脚本放在底部”的规则呢?

有时候,您别无选择,只能将脚本放在页面中的特定位置。但是,如果您将脚本放在页面底部,浏览器将不会中断其渲染以加载JS引擎来处理脚本(如果循环运行了很多次,这可能会很昂贵),并且可能会更快地显示页面的早期视图。

我不确定这是否是性能问题(可能是),但我当时在微软的一次演示会上,演示者说网络蜘蛛有时只读取网页上的前x个字符作为索引。因此,如果你有大量的脚本,你的内容可能无法正常访问和索引(你的网站的页面排名也不会那么高).

代码可能引用了尚未实例化的DOM对象,这是我能想到的最明显的原因。

页面顶部有脚本的页面仍然得分为“A”的原因是,这没有其他性能改进那么重要

每个规则都有权重,因此一些规则对ySlow等级的影响比其他规则更大


我总是把脚本放在底部。很少有理由需要在页面顶部使用脚本。我能想到的唯一原因是,您需要在页面中的任何其他内容之前立即执行JavaScript,这是非常罕见的。

当用户从您的站点请求页面时,页面HTML开始流式传输到浏览器。一旦浏览器遇到外部图像、脚本、CSS文件等的标记,它将同时开始下载该文件


如果您将脚本放在页面底部,它们将最后加载。换句话说,你的网页/应用的HTML内容/结构/css/图像将首先被加载,并且一些东西可以更快地显示在浏览器中;用户不必等到脚本下载完成后才能看到应用程序中的内容。

代码加载时不必立即运行。您可以通过稍后在事件上调用函数来延迟运行是的,这是另一种方式,但不一定是最好的方式。如果你能用良好的编码风格避免问题,就不要使用变通方法。然后,你就有了框架集的可能性,等等。你能举一个例子吗?“你别无选择,只能把脚本放在页面的特定位置”?@ DeReMon:例如,使用<代码>文档。在页面的中间写< /COD>生成一些标签。是的,您可以等待页面加载,然后设置某个元素的
innerHTML
。我不是这个意思。我的意思是能够将脚本放在底层,而不必重构代码。好吧,我认为这种代码是坏的。我不明白您为什么不希望更改代码,但从技术上讲,我接受您的观点。那么简单初始化数据的内联代码片段呢?这会推迟下载以前声明的图像吗。?