インライン スクリプトの最大の問題は、適切にキャッシュできないことです。すべてのスクリプトを (コンパイラを使用して) 縮小された 1 つの js ファイルに保存している場合、そのファイルは、サイト全体に対して、ブラウザーによって 1 回だけキャッシュできます。
これにより、サイトが混雑する傾向にある場合、長期的にはパフォーマンスが向上します。スクリプト用に別のファイルを用意することのもう 1 つの利点は、「同じことを繰り返さず」、再利用可能な関数をできるだけ宣言する傾向があることです。DOMContentReady がユーザー エクスペリエンスの低下につながることはありません。少なくとも、UI が読み込まれるまでユーザーを待たせるのではなく、事前にユーザーにコンテンツを提供します。これは、ユーザーにとって大きなターンオフになる可能性があります。
また、インライン スクリプトを使用しても、DOMContentReady を使用した場合よりも UI の応答性が向上するとは限りません。ajax 呼び出しを行うためにインライン スクリプトを使用しているシナリオを想像してみてください。提出するフォームが 1 つしかない場合は、問題ありません。複数のフォームがあると、最終的に ajax 呼び出しを繰り返すことになります。したがって、毎回同じスクリプトを繰り返します。最終的に、ブラウザは、DOM の準備ができたときにロードされた js ファイルで分離された場合よりも多くの JavaScript コードをキャッシュすることになります。
インライン スクリプトを使用することのもう 1 つの大きな欠点は、開発用と運用用の 2 つの別個のコード ベースを維持する必要があることです。両方のコード ベースが同期していることを確認する必要があります。開発バージョンにはコードの縮小されていないバージョンが含まれ、製品版には縮小されたバージョンが含まれます。これは、開発サイクルにおける大きな頭痛の種です。これらのかさばる html ファイルに隠されているすべてのコード スニペットを手動で縮小バージョンに置き換える必要があります。ただし、開発サイクル中に別のファイルを維持すると、そのファイルを本番コードベースのコンパイル済み縮小バージョンに置き換えるだけで済みます。
YSlow を使用すると、次のことがわかります。
外部の JavaScript および CSS ファイルを使用すると、ファイルがブラウザーによってキャッシュされるため、通常は高速なページが生成されます。HTML ドキュメントにインライン化された JavaScript と CSS は、HTML ドキュメントが要求されるたびにダウンロードされます。これにより、HTTP 要求の数が減りますが、HTML ドキュメントのサイズが大きくなります。一方、JavaScript と CSS がブラウザーによってキャッシュされた外部ファイルにある場合、HTTP 要求の数を増やすことなく、HTML ドキュメントのサイズが縮小されます。
コードが頻繁に変更され、コードを別の js ファイルに入れることが重要でなく、最終的にこれらのインライン スクリプトと同じ影響を与える場合にのみ、インライン スクリプトを保証できます。それでも、これらのスクリプトはブラウザによってキャッシュされません。ブラウザーがスクリプトをキャッシュできる唯一の方法は、スクリプトがetagを使用して外部の js ファイルに保存されている場合です。
ただし、これは決して JQuery 対 Google の閉鎖ではありません。閉鎖には独自の利点があります。ただし、クロージャー ライブラリを使用すると、すべてのスクリプトを外部ファイルに含めることが難しくなります (ただし、不可能というわけではありませんが、難しくなるだけです)。インライン スクリプトを使用する傾向があります。