Compression des `<script>` avec attributs `async` et `defer`

Référence : https://developer.mozilla.org/fr/docs/Web/HTML/Element/script

Un ticket pour réfléchir aux conséquences des attributs async et defer sur la concaténation des <script>.

Mes conclusions en lisant la doc, mais je suis pas sûr à 100% :

À priori il ne faudrait pas les concaténer avec les autres scripts, sinon on perd le chargement asynchrone.

Avec defer, les scripts sont exécutés dans l'ordre dans lequel ils apparaissent dans le document : ils pourrait peut-être être concaténés ensembles séparément ?

En résumé :

  • concaténer ensemble les script sans defer ni async
  • concaténer ensemble les scripts avec defer
  • Ne pas concaténer les script avec async

Autrement dit, si on part de ça :

<!-- les normaux -->
<script src="normal1.js">
<script src="normal2.js">
<!-- les defer -->
<script defer src="defer1.js">
<script defer src="defer2.js">
<!-- les async -->
<script async src="async1.js">
<script async src="async2.js">

Après compression, on aurait :

<!-- concaténation des normaux -->
<script src="normal1_normal2.js">
<!-- concaténation des defer -->
<script defer src="defer1_defer2.js">
<!-- les async -->
<script async src="async.js">
<script async src="async.js">