我正在尝试分析一个网站的性能,我相当有信心该网站由于页面上 JavaScript 文件的加载而减慢了速度。
页面上多次包含相同的 JavaScript 文件,并且<script />
标签分散在整个页面而不是包含在底部 http://developer.yahoo.com/performance/rules.html#js_bottom.
正如我所怀疑的,当查看 FireBug 的“Net”选项卡时,大多数时候(不是全部)当 JavaScript 被加载时,不会请求其他文件。浏览器等待 JavaScript 完成加载。
但也有一些例外。在某些情况下,JavaScript 会被加载,但与此同时,其他资源也会被加载,例如其他 JavaScript 文件和图像。
我一直认为 JavaScript 会阻止页面上其他资源的加载。我的想法是否错误,或者这种行为是否因浏览器或浏览器版本而异?
UPDATE:
对于那些已经解释了加载脚本如何阻止其他资源加载的人,我已经意识到了这一点。我的问题是为什么脚本wouldn't阻止其他资源的加载。 Firebug 显示一些 JavaScript 文件do not阻止加载其他资源。我想知道为什么会发生这种情况。
Javascript 资源请求确实是阻塞的,但是有一些方法可以解决这个问题(即:在头部注入 DOM 脚本标签,以及 AJAX 请求),而我自己看不到页面的情况很可能就是这里发生的情况。
包含同一个 JS 资源的多个副本是非常糟糕但不一定是致命的,这是大型网站的典型特征,这些网站可能是由不同团队的工作积累起来的,或者只是简单的旧的糟糕编码、规划或维护。
至于雅虎建议将脚本放在正文底部,这改进了感知到的响应时间,并且可以在一定程度上缩短实际加载时间(因为之前的所有资源都允许先异步),但它永远不会像非阻塞请求那样有效(尽管它们具有很高的技术能力障碍)。
关于非阻塞 JS 的相当不错的讨论here http://yuiblog.com/blog/2008/07/22/non-blocking-scripts/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)