Benchmark Brotli & Gzip

Benchmark de Compression Brotli & Gzip et Simulateur d'Économie de Bande Passante

Analysez les charges utiles de texte, CSS et JS via l'API native CompressionStream, en évaluant les ratios Brotli/Gzip et les temps de chargement mobiles 3G/4G.

Presets:
Profil Réseau:
Requêtes Mensuelles:
Ready14.6 KB initcwndCSS
Données d'entrée (Code / Texte)2.39 KB
Algorithme & Niveau de compressionRatio cible & Statut TCP
Uncompressed (Raw)Baseline
2.39 KB1x
Fastest (0 ms)
Tient dans la 1re rafale TCP (≤ 14.6 KB)
Deflate (RFC 1951)Standard
839 B(-66%)2.92x
Native Stream
Tient dans la 1re rafale TCP (≤ 14.6 KB)
Gzip (RFC 1952, Level 6)Universal
856 B(-65%)2.86x
Native Stream
Tient dans la 1re rafale TCP (≤ 14.6 KB)
Brotli Dynamic (Level 5-6)Web Standard
668 B(-73%)3.66x
+18% vs Gzip(1.5ms)
Tient dans la 1re rafale TCP (≤ 14.6 KB)
Brotli Static Pre-comp (Level 11)Maximum Density
608 B(-75%)4.02x
+26% vs Gzip
Tient dans la 1re rafale TCP (≤ 14.6 KB)
Zstandard (Zstd Level 3)High Throughput
702 B(-71%)3.49x
Fastest Decompress(0.8ms)
Tient dans la 1re rafale TCP (≤ 14.6 KB)
Avantage Brotli vs Gzip
+8%Compression plus dense

Le dictionnaire statique Brotli encode les tokens HTML et CSS en 1-2 octets au lieu de chaînes ASCII complètes.

Gain de Temps sur Réseau 3G
36 msÉconomisé surSlow 3G

Réduit les allers-retours initiaux de démarrage lent TCP, accélérant le First Contentful Paint (FCP).

Économie de Coût de Transfert
$0.18 / yr (AWS CDN)

Calculé à l'échelle de 1M req au tarif standard de sortie de $0.085/Go.

Moteur 100% Natif CompressionStream

Aucun envoi serveur. Utilise l'API Web Streams du navigateur pour mesurer instantanément les octets compressés et la vitesse d'exécution.

Modèles Empiriques Brotli & Zstandard

Exploite le dictionnaire web pré-enregistré de 122 Ko de Brotli et sa fenêtre glissante pour prédire les ratios niveau 5 et 11.

Simulation Physique TCP Slow-Start & Latence

Modélise la fenêtre de congestion initiale (initcwnd = 14,6 Ko) et les allers-retours RTT sur réseaux mobiles 3G, 4G et fibre.

Référence technique et guide d'architecture

Guide Développeur : Benchmark de Compression Brotli & Gzip et Estimateur d'Économie de Bande Passante — Guide de référence

Analysez les charges utiles de texte, CSS et JS via l'API native CompressionStream, en évaluant les ratios Brotli/Gzip et les temps de chargement mobiles 3G/4G.

Paramètres clés et contrôles

Charge utile d'entrée (Payload Input)String | File Buffer

Texte brut, bundle JavaScript, feuille de style CSS, document JSON ou code HTML à compresser et à évaluer.

Par défaut : Bundle JavaScript / CSS d'exemple
Algorithme de compression cibleEnum (Brotli | Gzip | Both)

Algorithme évalué lors du benchmark. Brotli (RFC 7932) intègre des dictionnaires statiques optimisés pour le web, tandis que Gzip (RFC 1952 DEFLATE) assure une compatibilité universelle.

Par défaut : Both (Comparatif)
Niveau de qualité de compressionInteger (Gzip: 1-9 | Brotli: 0-11)

Compromis entre l'utilisation des cycles CPU et le taux de réduction en octets. Les niveaux modérés conviennent aux flux dynamiques ; les niveaux maximaux (Brotli 11, Gzip 9) sont recommandés pour les ressources statiques de build CDN.

Par défaut : Brotli 6 / Gzip 6 (dynamique) | Brotli 11 (statique)
Profil de simulation réseauEnum (Slow 3G | Fast 3G | 4G LTE | Broadband)

Profil de bridage réseau simulant une latence RTT et un débit spécifiques pour projeter le TTFB et la durée globale de transfert.

Par défaut : Fast 3G (1.6 Mbps, 150ms RTT)

Conseils de pro et bonnes practices

Pré-compressez vos bundles JS

Pré-compressez vos bundles JS, feuilles CSS et fichiers SVG lors du build CI/CD en utilisant Brotli niveau 11 et Gzip niveau 9 (ou Zopfli). En les servant avec Nginx via brotli_static on;, vous obtenez une compression maximale sans solliciter le CPU en production.

Les fichiers de moins de 1 Ko peuvent

Les fichiers de moins de 1 Ko peuvent voir leur taille augmenter après compression en raison de la surcharge des en-têtes et métadonnées Brotli/Gzip. Configurez toujours votre serveur avec gzip_min_length 1024; et brotli_min_length 1024;.

Assurez-vous que vos proxys inverses

Assurez-vous que vos proxys inverses et CDN respectent l'en-tête Vary: Accept-Encoding. Cela empêche qu'un client ne prenant pas en charge Brotli ne reçoive par erreur un flux binaire compressé avec Content-Encoding: br mis en cache.

Désactivez la compression HTTP sur les

Désactivez la compression HTTP sur les réponses dynamiques qui reflètent des saisies utilisateur associées à des secrets (tels que des jetons CSRF), ou isolez les jetons dans des cookies non compressés et des requêtes indépendantes.

Pièges courants et dépannage

Le fichier compressé est plus volumineux que le fichier d'origine non compressé

Les fichiers de moins de 1 Ko ou les formats binaires déjà compressés (comme JPEG, PNG, WOFF2) ne possèdent pas de redondance textuelle. Le surcoût des en-têtes dépasse le gain obtenu. Définissez un seuil minimal (ex. 1024 octets) et excluez les types MIME binaires.

Le navigateur télécharge un fichier binaire ou affiche des caractères illisibles au lieu d'exécuter le code

Le serveur a transmis des données compressées sans l'en-tête de réponse HTTP Content-Encoding: br ou Content-Encoding: gzip. Vérifiez la transmission des en-têtes sur votre serveur d'origine ou votre CDN.

Surcharge CPU du serveur et pics de latence lors des fortes affluences

La compression dynamique en temps réel aux niveaux maximaux (Brotli 10-11 ou Gzip 9) sature les processeurs. Limitez la compression dynamique à Brotli 4-5 ou Gzip 5-6 et déléguez l'ensemble des fichiers statiques à la pré-compression dans votre pipeline CI/CD.

Foire aux questions (FAQ)

Pourquoi Brotli compresse-t-il les ressources web bien plus efficacement que Gzip ?▼

Brotli utilise une fenêtre glissante pouvant atteindre 16 Mo (contre 32 Ko pour DEFLATE dans Gzip) et intègre un dictionnaire statique prédéfini de plus de 120 000 mots et fragments fréquents en HTML et JavaScript. Cela procure un gain de densité de compression de 15 % à 25 % supérieur à Gzip sur le texte web.

Brotli peut-il être utilisé sans chiffrement HTTPS sur les navigateurs modernes ?▼

Non. Les principaux navigateurs (Chrome, Firefox, Safari, Edge) imposent une connexion HTTPS pour activer Brotli (Content-Encoding: br), évitant ainsi que d'anciens proxys intermédiaires ne corrompent les flux binaires non reconnus sur le port 80.

Quel niveau de compression privilégier pour du contenu dynamique par rapport au statique ?▼

Pour les fichiers statiques générés en CI/CD, utilisez Brotli niveau 11 (--best) ou Gzip niveau 9/Zopfli, car le coût de calcul n'est payé qu'une seule fois. Pour les réponses API dynamiques calculées à chaque requête, préférez Brotli 4 ou Gzip 5 pour concilier latence réduite et faible consommation CPU.

Quel est l'impact direct de la compression sur les Core Web Vitals (CWV) ?▼

En réduisant drastiquement le volume des fichiers CSS et JS critiques pour le rendu, on diminue le nombre d'allers-retours réseau (RTT) nécessaires lors de la phase de démarrage lent TCP (slow-start) sur mobile, ce qui accélère immédiatement le First Contentful Paint (FCP) et le Largest Contentful Paint (LCP).

Faut-il compresser avec Brotli ou Gzip des médias tels que WebP, AVIF ou MP4 ?▼

Non. Les formats multimédias modernes comme WebP, AVIF ou MP4 font déjà l'objet d'un encodage entropique hautement spécialisé. Les retraiter avec Gzip ou Brotli mobilise inutilement le CPU, ajoute de la latence et accroît souvent la taille finale du fichier.

Outils et utilitaires connexes

Tous les outils →
Guide de développement du convertisseur Protobuf .proto vers Interfaces et Enums TypeScriptDéveloppement

Analysez les définitions de messages Protocol Buffers (proto2 et proto3), enums et champs imbriqués en interfaces TypeScript propres.

Ouvrir l'outil→
Guide Développeur : Générateur de Documentation API OpenAPI & Swagger vers MarkdownDéveloppement

Convertissez les spécifications OpenAPI 3.0 et Swagger 2.0 JSON/YAML en documentation de référence GitHub Flavored Markdown claire et professionnelle.

Ouvrir l'outil→
Guide développeur du convertisseur GraphQL SDL vers schéma PrismaDéveloppement

Convertissez les types d'objets, énumérations et directives du langage SDL GraphQL en modèles et relations Prisma ORM propres et optimisés.

Ouvrir l'outil→
Guide Développeur : Générateur d'entités TypeORM à partir de DDL SQL (Entités TypeScript)Développement

Convertissez vos instructions SQL CREATE TABLE DDL en classes d'entités TypeScript TypeORM propres avec @Column, @PrimaryGeneratedColumn, relations et index.

Ouvrir l'outil→
Guide du Développeur pour le Convertisseur SQL CREATE TABLE DDL vers Schéma ZodDéveloppement

Traduisez les schémas de tables SQL, types de données, contraintes et colonnes nullables en schémas d'objets Zod fortement typés pour TypeScript.

Ouvrir l'outil→
Convertisseur Docker Compose vers Manifestes Kubernetes (Compose vers K8s) - Guide DéveloppeurDéveloppement

Convertissez les services, variables d'environnement, ports et montages de volumes docker-compose.yml en manifestes YAML Kubernetes Deployment et Service.

Ouvrir l'outil→