Performance
Impact du snippet Korvus sur les performances de votre site : taille, chargement, exécution et réseau.
Taille du script
Le snippet Korvus est un fichier unique sans aucune dépendance externe :
| Métrique | Valeur |
|---|---|
| Taille brute | ~34 KB |
| Taille gzippée | ~10,5 KB |
| Dépendances | 0 |
Chargement asynchrone
Le snippet se charge avec l'attribut async. Il n'apparaît jamais dans la chaîne de rendu critique de votre page :
- Pas de blocage du parsing HTML
- Pas d'impact sur le First Contentful Paint (FCP)
- Pas d'impact sur le Largest Contentful Paint (LCP)
- Pas de Cumulative Layout Shift (CLS) — le snippet n'injecte aucun élément visuel
Exécution après chargement complet
Toute l'exécution du snippet démarre après l'événement window.load, suivi d'un setTimeout(0). Concrètement, Korvus attend que votre site soit entièrement chargé et rendu avant de commencer à collecter des données.
Votre contenu, vos images, vos scripts métier passent en priorité.
Zéro modification du DOM
Le snippet lit le DOM pour détecter les signaux (prix, stock, erreurs visibles, données structurées) mais ne le modifie jamais :
- Pas d'injection d'éléments HTML
- Pas de modification de styles CSS
- Pas d'overlay, de bannière ou de widget
- Pas d'impact sur le rendu de votre page
La seule exception : le module de preuve vidéo
Ce module est désactivé par défaut et n'est mis en service que si vous le demandez. Quand il est actif, deux écritures dans le DOM ont lieu :
- Une balise
<script>ajoutée dans le<head>pour charger le code du module depuis notre CDN. C'est la seule voie possible sans exigerunsafe-evaldans votre Content Security Policy. - Un
iframemasqué créé par la bibliothèque d'enregistrement, qui lui sert à lire des API du navigateur non altérées par les autres scripts de la page. Il est invisible, ne charge aucune page, et est retiré à l'arrêt de l'enregistrement (sur les navigateurs WebKit, il reste en place pendant toute la durée de la capture).
Aucune des deux n'a d'effet visuel ni n'affecte le rendu de votre page. Elles écrivent néanmoins dans le DOM : les quatre points ci-dessus décrivent le snippet de base, pas un site où la preuve vidéo est activée. Détail de ce que ce module collecte : Données collectées.
Envoi par batch
Les données collectées ne sont pas envoyées en temps réel. Elles sont regroupées et envoyées en un seul appel réseau toutes les 30 secondes :
- Une seule requête HTTP par batch (via
fetchaveckeepalive: true) - Buffer limité à 100 événements + 50 pages vues par batch
- Flush automatique quand l'utilisateur quitte l'onglet (
visibilitychange) - Pas d'appel réseau à chaque clic ou interaction
Détection d'inactivité
Si un visiteur n'interagit plus avec la page pendant 30 minutes (pas de mouvement de souris, de frappe clavier, de scroll ou de touch), le snippet stoppe automatiquement toute collecte :
- Les observers et listeners sont détachés
- Plus aucune requête réseau n'est envoyée
- Les ressources CPU et batterie sont libérées
Si le visiteur revient et interagit à nouveau, la collecte reprend automatiquement.
CDN et cache
Le script est servi depuis un CDN (Scaleway Edge Services) avec un cache d'1 heure. Les visiteurs récurrents chargent le snippet depuis le cache de leur navigateur, sans aucune requête réseau supplémentaire.
Isolation totale
Le snippet s'exécute dans un try/catch global. Si une erreur interne survient, elle est silencieusement ignorée. Le snippet ne peut jamais :
- Bloquer le chargement de votre site
- Provoquer une erreur JavaScript visible
- Interférer avec vos autres scripts