AstroQuest

Moteur ZIP

Ouvre une archive en ne lisant que ce qu’il faut, recopie le reste sans le recompresser. Le moteur ZIP remplace jszip dans 76 fichiers de l’application. Il lit une archive par son répertoire central, ne décompresse que ce qu’on lui demande et recopie sans recompression les parties inchangées.

Chiffres clés

  • ×8 plus rapide à l’écriture : niveau 1 contre le niveau 6 de jszip, pour ~4 % d’octets de plus
  • 3 ms pour ouvrir, modifier, réécrire : les autres parties sont recopiées sans recompression
  • 76 fichiers migrés : même surface d’API que jszip

Avant et maintenant

  • Écriture de 40 feuilles de 357 ko : 430 ms avant, 50 ms maintenant (8,6 fois mieux). jszip niveau 6 contre niveau 1 par défaut.
  • Lecture des mêmes feuilles : 62 ms avant, 42 ms maintenant (1,5 fois mieux).

Ce que ce moteur remplace

Moteur ZIP remplace jszip dans l’application.

Comment ça marche

  • Lire par le répertoire. Le répertoire central indique où est chaque entrée ; le contenu n’est décompressé qu’à la première lecture, et seulement pour elle.
  • Vérifier vite. La somme de contrôle de chaque entrée est calculée par un code Rust compilé en WebAssembly.
  • Recopier sans recompresser. Ouvrir un classeur, changer une feuille et réécrire : les autres parties passent telles quelles.
  • Se protéger. Les bombes zip sont bornées, les grandes archives sont lues, les entrées chiffrées sont refusées franchement.

Ce qui n’est pas parfait

  • Pas de ×10 sur le débit brut : la compression est près de son plafond. Le gain vient d’éviter le travail, et de n’avoir qu’un moteur.
  • Par défaut, on compresse (jszip stockait tel quel) : les xlsx et pptx exportés sont plus petits.
  • jszip reste en devDependency, comme référence indépendante des bancs. Le codec Regic utilise encore fflate.

Source des chiffres

Document du dépôt AstroQuest : docs/reference/bilan-moteurs-natifs-2026-10-05.md. Mesures internes, en développement, sur fichiers réels : des ordres de grandeur, pas des garanties.

Questions fréquentes

Que fait la technologie « Moteur ZIP » d’AstroQuest ?

Le moteur ZIP remplace jszip dans 76 fichiers de l’application. Il lit une archive par son répertoire central, ne décompresse que ce qu’on lui demande et recopie sans recompression les parties inchangées.

Quelles sont les limites de « Moteur ZIP » ?

Pas de ×10 sur le débit brut : la compression est près de son plafond. Le gain vient d’éviter le travail, et de n’avoir qu’un moteur. Par défaut, on compresse (jszip stockait tel quel) : les xlsx et pptx exportés sont plus petits. jszip reste en devDependency, comme référence indépendante des bancs. Le codec Regic utilise encore fflate.