をロードするまで、私たちのサイトには、非同期でロードapplication.jsました:Application.jsスクリプトイメージが
<script async="async" src="//...application-123456.js"></script>
はまた、我々は、(1)サードパーティのスクリプトがたくさんあります(2)より大きなスクリプトが呼び出されるasync <script>
タグを順に作成します。
例を挙げれば、これらのサードパーティ製のスクリプトの1つはGoogle's gpt.jsです(どのように動作するかを簡単に知ることができます)。
私たちの問題は、すべてのサードパーティ製のスクリプトが期待どおりに非同期に読み込まれる間、application.jsは4秒以上 "キューイング"状態でスタックすることです。 <script>
要素を作成し、「SRC」属性を設定し、それをロードします:
<script async>
(function() {
var elem = document.createElement('script');
elem.src = 'http://...application-123456.js';
elem.async = true;
elem.type = 'text/javascript';
var scpt = document.getElementsByTagName('script')[0];
scpt.parentNode.insertBefore(elem, scpt);
})();
</script>
が、何も変わっていない
は、私は、スクリプトを変更すると、それは第三者のもののようにロード作ってみました。
私は、画像をほとんど含んでいない当サイトのページでネットワークカスケードを研究し、キューイング時間がほぼゼロであることを確認しました。 異なる量の画像を持つページで同じ実験を試み、より多くの画像があるページでは待ち時間が比例して増加することがわかりました。
私はChrome's network cascade documentationでこれを読んで:
キューイング時間を:それは(そのようなスクリプト/スタイルなど)、重要なリソースよりも優先度の低いと考えられているため、要求は、レンダリングエンジンにより延期されました。これは画像でよく起こります。
何らかの理由でブラウザがapplication.js
を「優先度が低い」とマークしている可能性はありますか?私はウェブを見て、誰もキューイング時間に問題を経験していないようだ。誰もがアイデアを持っていますか?
ありがとうございました。
ありがとう@ギドン、その記事は非常に面白かったし、どのようにプリロードが動作するはずですか説明した。しかし、私の問題はまだそこにあります:' –
私はそれが期待どおりに動作するようにした方法を見つけました: '