Explorer
KNOW-PAT-244

Workers, buffers et rendu déporté sans bloquer l'interface

Domaine
performance
Type
pattern
Priorité
P1

Workers, buffers et rendu déporté sans bloquer l'interface

Règle

Le thread principal conserve le DOM, les entrées et le retour visuel. Les calculs longs, le décodage et les transformations par lots passent dans des Dedicated Workers. Un Service Worker sert au réseau et au hors-ligne, pas de moteur de calcul permanent.

Flux recommandé

  1. L'UI envoie une commande typée avec identifiant, paramètres et signal d'annulation.
  2. Les gros ArrayBuffer sont transférés avec postMessage(message, transferList) afin d'éviter une copie ; l'émetteur perd alors leur propriété.
  3. Le Worker publie progression et résultat à fréquence bornée, pas à chaque opération interne.
  4. OffscreenCanvas déplace le rendu hors du DOM lorsque le profilage montre que le rendu bloque l'UI.
  5. Un crash du Worker déclenche une recréation contrôlée et une restauration depuis le dernier état validé.

Mémoire partagée

SharedArrayBuffer n'est pas le choix par défaut. Il exige HTTPS, une isolation cross-origin effective et une synchronisation correcte avec Atomics. Il est réservé aux cas où les transferts de propriété ne suffisent pas et où la mesure montre le coût des copies ou de la coordination.

Risques et tests

  • Tester les courses, messages en retard, annulations et redémarrages de Worker.
  • Borner files d'attente et fréquence de progression.
  • Vérifier que la mémoire revient au niveau initial après plusieurs ouvertures/fermetures.
  • Tester l'impact des en-têtes d'isolation sur polices, images, scripts et intégrations tierces.
  • Offrir un chemin sans OffscreenCanvas ou mémoire partagée si la cible navigateur l'exige.

Sources