概要
- 2010年に作成されたチケットがクローズされた
- スクリプトタグに
defer
やasync
を追加することで、ページロードの残りの部分をブロックすることなくロードできるようになる - その結果、LCP(Largest Contentful Paint)のパフォーマンスが向上し、UXが向上することが期待できる
defer
の処理
- HTML 描画中に script タグを発見
- script は非同期でダウンロードされ、HTML 描画は継続
- script のダウンロードが完了
- HTML 描画を中断
- script を実行
- HTML 描画を再開
script タグが書かれた順に実行されない可能性がある

async
の処理
- HTML 描画中に script タグを発見
- script は非同期でダウンロードされ、HTML 描画は継続
- script のダウンロード完了。HTML 描画は継続
- HTML 描画完了
- script を実行
script タグが書かれた順に実行される。HTML描画が完了しているので、確実にDOM操作を行える。

記述例
defer
を設定
wp_register_script(
'foo',
'/path/to/foo.js',
array(),
'1.0.0',
array(
'strategy' => 'defer'
)
);
フッターに出力させ async
を設定
wp_register_script(
'bar',
'/path/to/bar.js',
array(),
'1.0.0',
array(
'in_footer' => true,
'strategy' => 'async',
)
)
資料
- Registering scripts with `async` and `defer` attributes in WordPress 6.3
https://make.wordpress.org/core/2023/07/14/registering-scripts-with-async-and-defer-attributes-in-wordpress-6-3/