ディレマは次のようなものです。
すべてのスクリプトブロックをマスターページ(一部のフレームワークにページを含める)に合わせようとすると、すべてのページにすべてのスクリプト(不要なスクリプトを含む)のコピーが取得され、これらがすぐに合計されてページサイズが大きくなります。
必要に応じてスクリプトブロックを含めたり挿入したりすると、JavaScriptがプロジェクト全体に広がります。
どこでバランスを保つのか悩んでいます。誰?
ディレマは次のようなものです。
すべてのスクリプトブロックをマスターページ(一部のフレームワークにページを含める)に合わせようとすると、すべてのページにすべてのスクリプト(不要なスクリプトを含む)のコピーが取得され、これらがすぐに合計されてページサイズが大きくなります。
必要に応じてスクリプトブロックを含めたり挿入したりすると、JavaScriptがプロジェクト全体に広がります。
どこでバランスを保つのか悩んでいます。誰?
できるだけ多くの JavaScript を外部.js
ファイルに抽出します。最も一般的に使用されるライブラリをマスターページに含めますが、個々のページでそのページに固有の JavaScript が必要な場合は、そのページにのみ読み込むことをお勧めします。どの.js
ファイルがどのページによって読み込まれるかの相互参照を保持し、ライブラリが多くのページによって参照されている場合は、それをマスターページに移動します。
YUI Compressorなどのツールや JavaScript ライブラリの最小化と圧縮に使用するツールを使用して、すべての外部 JavaScript ライブラリを必ず圧縮/縮小してください。.
すべての JS ファイルを含めることは大きな問題ではなく (読み込み時に遅いコードが実行されている場合を除きます)、ページがそれほど肥大化することもありません: 読み込まれると、ブラウザーはいずれにせよそれらをキャッシュするため、読み込みは 0 になります。次のページの時間。
もちろん、JS ファイルのコンテンツをページ自体に配置しない限りは! :-)
ページ サイズの肥大化が懸念される場合は、Javascript を、それを必要とするページによって参照される別の js ファイル (または複数のファイル) に移動する必要があります。これは、初めての訪問者に対してより多くの HTTP リクエストがあることを意味しますが、ブラウザが Javascript をキャッシュできるため、サイトのすべてのページで再度取得する必要がなくなります。
サイト全体の JS を縮小、マージ、および gzip します (実際には約 17 個のファイルが 2 つのファイルにマージされ、1 つはすべてのコード用で、もう 1 つは mootools や clientcide などのライブラリ コード用です)。これにより、スクリプトのダウンロードにかかる時間が大幅に短縮されます。圧縮とマージが行われ、その場でサーバーにキャッシュされるため、開発はまったく遅くなりません。上記のようにすべて圧縮すると、サイト全体のグッズの合計 JS は約 50K になります。
また、ファイルには長い有効期限が設定されています。すべてのファイルにはバージョン番号が付けられているため、変更を加えるとバージョン番号が上がり (簡単にするためにサイト全体のバージョン番号があります)、ユーザーは新しいバージョンを取得する必要があります。ダウンロードされたものは、ブラウザによってキャッシュされます。
それに加えて、JS をページのフッターに配置するようにしました。これにより、すべてがはるかに高速にレンダリングされ、JS をダウンロードしている間にユーザーが何かを確認できるようになります。
一部の個々のページには、必要な 1 回限りのスクリプト (検索フォームなど) があります。これらは上記と同じ扱いになります (つまり、必要なすべてのファイルがマージ、縮小、gzip されます)。ただし、サイト全体のコードはそのまま残されるため、キャッシングの使用。したがって、この例では、サイト全体、ライブラリ、およびそのページのカスタム コードの 3 つの JS ファイルをダウンロードできます。
スクリプトを縮小する場合、それほど大きな問題ではありません.jqueryと同じくらい大きいものは、縮小後約50kです。