実行中のスクリプトタグを実行するダウンロードから他のスクリプトタグをブロックしますか?

StackOverflow https://stackoverflow.com//questions/10681388

質問

これは index.html からです。> HTML5のボイラープレート、</body>タグの直前:

<!-- JavaScript at the bottom for fast page loading: http://developer.yahoo.com/performance/rules.html#js_bottom -->

<!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if offline -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.7.2.min.js"><\/script>')</script>

<!-- scripts concatenated and minified via build script -->
<script src="js/plugins.js"></script>
<script src="js/main.js"></script>
<!-- end scripts -->

<!-- Asynchronous Google Analytics snippet. Change UA-XXXXX-X to be your site's ID.
     mathiasbynens.be/notes/async-analytics-snippet -->
<script>
  var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];
  (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
  g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
  s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
.

スクリプトタグが並列ダウンロードをブロックできることを知っていることを知っています。下の

私の質問:ブラウザは、plugins.jsをダウンロードしてからscript.jsをダウンロードする前にjQueryが完全にダウンロードされて実行されるのを待ってから実行されますか?

またはそれは先に見ることができ、すべてのスクリプトダウンロードをできるだけ早く(並行)し、前のスクリプトの実行を遅くするだけで、前のスクリプトのを遅らせるだけです。実行を終了しましたか?

役に立ちましたか?

解決

私の質問plugins.jsをダウンロードしてからscript.jsをダウンロードする前に、ブラウザは実際にjQueryが完全にダウンロードされ、実行される前に実行されますか?

そうでなく、そうでなくてもそうではないかもしれません。ブラウザは(制限内)を試してダウンロードを並列化してページを速くする。

またはそれは先に見て、できるだけ早くダウンロードするすべてのスクリプトを起動し(並行)、前のスクリプトの実行を実行しただけです。

right、その部分は仕様asyncまたはdefer属性の範囲内)。また、サンプルが表示されると、スクリプトが別のスクリプトを挿入できるため、スクリプトが実行されるまでスクリプトが実行される順序を必ずしも判断することはできません。しかし、それはそれらをダウンロードしてそれらを準備することができます。

他のヒント

私はこの詳細についてこの質問に対するより適切な答えを見つけました。 http://www.html5rocks.com/en/tutorials/speed/script-loading/ 詳細については、それを参照してください。

HTML5仕様書:

属性も属性でもない場合AsyncとDefer]が存在し、その後スクリプトはフェッチされます ユーザーエージェントが構文解析を続ける前にすぐに実行されます。 ページ。

ページが解析されていない場合、ユーザーエージェントはどの後続のリソースがフェッチする必要があるかを知ることができないため、最初のリソースが実際に実行されるまで、さらにリソースを取り込むことができないはずです。

これが理にかなっている理由を見るために、最初のスクリプトにが含まれていると想像してください。

document.write("<!--"); 
.

マッチングコメントの閉鎖がない場合、マークアップのスクリプトに続くすべてのものは、次の-->が見つかるまでコメントの一部になります。これにより、1つ以上のリソース参照をスキップさせる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top