使用していない JavaScript を削除する

使用していない JavaScript は、ページの読み込み速度を低下させる可能性があります。

  • JavaScript がrender-blockingである場合、ブラウザはページのレンダリングに必要な他のすべての作業に進む前に、スクリプトのダウンロード、解析、コンパイル、評価を行う必要があります。
  • JavaScript が非同期(レンダリング ブロックではない)であっても、コードはダウンロード中に他のリソースと帯域幅を競合するため、パフォーマンスに大きな影響を与えます。未使用のコードをネットワーク経由で送信することは、無制限のデータプランを利用していないモバイル ユーザーにとっても無駄です。

使用していない JavaScript の監査が失敗する仕組み

Lighthouse は、使用されていないコードが 20 キビバイトを超えるすべての JavaScript ファイルを報告します。

監査のスクリーンショット。
[URL] 列の値をクリックして、スクリプトのソースコードを新しいタブで開きます。

使用していない JavaScript を削除する方法

使用していない JavaScript を検出する

Chrome DevTools の [Coverage] タブでは、未使用のコードについて行単位の分類を確認できます。

Puppeteer の Coverage クラスを使用すると、使用されていないコードの検出と使用済みコードの抽出プロセスを自動化できます。

未使用のコードの削除をサポートするビルドツール

次の Tooling.Report テストを確認して、使用されていないコードを回避または削除しやすくする機能をバンドルがサポートしているかどうかを確認します。

スタック固有のガイダンス

Angular

Angular CLI を使用している場合は、ソースマップを本番環境用ビルドに含め、バンドルを調べられるようにします

Drupal

使用されていない JavaScript アセットの削除を検討し、必要な Drupal ライブラリのみを関連性の高いページまたはページのコンポーネントに接続してください。詳しくは、Drupal のドキュメントをご覧ください。不要な JavaScript を読み込んでいる接続済みライブラリを特定するには、Chrome DevTools でコードの Coverage を確認します。Drupal サイトで JavaScript の集約が無効になっている場合は、スクリプトの URL から該当するテーマやモジュールを特定できます。コード カバレッジが赤色で示されているテーマやモジュールをリストで探します。テーマやモジュールによってスクリプト ライブラリがアタッチされるのは、実際にページで使用される場合のみです。

Joomla

ページで使用されていない JavaScript を読み込む Joomla 拡張機能の数を減らすか、他の拡張機能に切り替えることをご検討ください。

Magento

Magento の組み込みの JavaScript バンドルを無効にします。

対応

サーバーサイドのレンダリングを行わない場合は、React.lazy()JavaScript バンドルを分割します。それ以外の場合は、loadable-components などのサードパーティ ライブラリを使用してコード分割を行います。

Vue

サーバーサイド レンダリングを行っておらず、Vue ルーターを使用していない場合は、ルートの遅延読み込みによってバンドルを分割します。

WordPress

ページで使用されていない JavaScript を読み込む WordPress プラグインの数を減らすか、他のプラグインに切り替えることをご検討ください。

リソース