« 上一篇下一篇 »

选择最佳脚本加载技术的决策树

选择最佳脚本加载技术决策树不同域、无序,不同域、保持顺序。
 
      不同域、无序

           XHR Eval、XHR注入和Script in Iframe技术在这些情况下无法使用,因为主页面的域与脚本的域不同。我们不应该使用Script Defer技术,因其迫使脚本按顺序加载,相反,如果脚本能一到达就执行的话会让页面加载更快一些。对于这种情况,Script DOM Element技术是最佳方案,但它会导致在Firefox中加载时保持顺序,虽然我们并不希望这样。注意这两种技术都触发忙指示器,但我们没有办法避免这个问题。包含JavaScript广告和控制的网页是符合这种情况的实例。广告和控件的脚本所在的域往往和主页面不同,但是它们之间没有任何依赖关系,所以加载顺序无关紧要。

      不同域、保持顺序

      和前面一样,因为主页面的域与脚本不同,XHR Eval、XHR注入和Script in Iframe技术行不通。为了确保加载顺序,我们应该在Internet Explorer中使用Script Defer技术,而在Firefox中使用Script DOM Element技术。注意这两种技术都触发忙指示器。一个符合这种情况的实例是从不同的服务器下载多个存在依赖关系的JavaScript文件的页面。

   同域、无序、无忙指示器

      XHR Eval和XHR注入是唯一不触发忙指示器的两种技术。这两种XHR技术,相对更推荐XHR注入,因为使用该技术时脚本无需重勾。它可以应用于希望在后台下载JavaScript文件的网页。

   同域、无序、有忙指示器

      XHR Eval和XHR注入和Script in Iframe是唯一跨Internet Explorer和Firefox而不保持加载顺序的技术。Script in Iframe技术看起来似乎是最佳选择,因为它触发忙指示器,而且只是稍微增加了一些页面大小。但我更倾向于XHR注入,因为使用该技术时脚本无需重构建就能使用,而且它同时是其他决策树分支的选择。我们需要额外的JavaScript来激活忙指示器:当XHR发出时激活状态栏和光标,XHR返回时恢复。称之为“管理XHR注入”。

   同域、保持顺序、无忙指示器

      XHR Eval和XHR注入是两个不触发忙指示器的技术。这两种XHR技术中倾向于XHR注入,因为使用该技术时脚本无须重构。为了保证加载顺序,需要另一种类型的“管理XHR注入”。在这种情况下,如有必要,可以把XHR响应塞进队列里,按顺序执行,延迟加载的脚本则须要所有在它之前的脚本下载并执行完毕后才开始执行。有多个存在内部依赖的脚本在后台下载的页面符合这种情况。

« 上一篇下一篇 »