Optimisation des performances web : décryptage des paramètres par défaut de la compression intelligente de Fastly

Directeur principal des avant-ventes pour l'Amérique du Nord

Vice-président des produits réseau

Dans le paysage numérique actuel, en constante évolution, un site web lent est un site web perdant. Ce n'est pas seulement une question de frustration des utilisateurs ; cela affecte le classement dans les moteurs de recherche et, en fin de compte, vos résultats financiers.
Et s’il existait un moyen simple, mais puissant, d’accélérer considérablement votre site tout en réduisant les coûts ?
Le secret réside dans la compression du contenu. Une optimisation souvent négligée qui peut réduire la taille des charges utiles jusqu'à 70 %. En utilisant des algorithmes comme Brotli ou gzip, vous pouvez livrer du contenu plus rapidement, réduire l'utilisation de la bande passante et offrir à vos utilisateurs une expérience plus fluide et plus rapide. Le tout sans modifier une seule ligne du design de votre site.
Chez Fastly, nous nous engageons à accélérer les sites web de nos clients, et la compression de contenu est une pierre angulaire de cet engagement. En fait, nous sommes à la périphérie de l'innovation depuis plus d'une décennie.
Cet article explorera les paramètres de compression par défaut de Fastly, évaluera leur efficacité à partir des données récentes de l'HTTP Archive, et expliquera comment nous utilisons ces données pour offrir de meilleures expériences à nos clients.
Comment Fastly dynamise votre contenu grâce à la compression
Fastly optimise automatiquement les requêtes pour mettre en cache efficacement les réponses compressées, offrant ainsi une amélioration significative des performances. Nous prenons en charge deux algorithmes de compression principaux pour les données en périphérie : Gzip et Brotli.
Fastly gère la compression du contenu de quelques manières clés :
Compression à l’origine : Si votre serveur d’origine livre du contenu déjà compressé et correctement configuré avec
Accept-Encodinget des en-têtes Vary, Fastly veillera à ce que ces réponses compressées soient transmises uniquement aux clients compatibles et réutilisées depuis le cache autant que possible.Compression en périphérie : Fastly peut également compresser des données directement en périphérie de notre plateforme :
Compression statique : La compression statique se produit lorsque Fastly reçoit des réponses de votre serveur d'origine avant de les mettre en cache. Fastly prend la réponse mise en cache possible, la compresse en périphérie et stocke l'objet compressé pour les futures requêtes.
La compression statique est disponible pour les services VCL utilisant soit Gzip soit Brotli. Parce que l’objet compressé est mis en cache et livré sous sa forme plus petite, la facturation est basée sur la taille compressée livrée au client. Cela aide à réduire les coûts de bande passante tout en améliorant la performance globale.
Compression dynamique : Cela se produit juste avant que les réponses soient livrer au client, après la mise en cache. C'est idéal lorsque la compression statique n'est pas viable et qu'elle est compatible avec Edge Side Includes. Les réponses compressées dynamiquement sont facturées en fonction de la taille non compressée avant que la compression ait lieu.
Optimisation
Accept-Encoding: Fastly normalise les valeurs de l'en-têteAccept-Encodingenvoyées par les clients. De nombreuses variantes de cet en-tête sont sémantiquement équivalentes (par exemple,gzip,br, etgzip,br,deflate). En normalisant cet en-tête, Fastly réduit le nombre de permutations de clés de cache, ce qui permet à une seule réponse compressée mise en cache d'être réutilisée par un plus grand nombre d'utilisateurs, même lorsque leurs navigateurs envoient des valeursAccept-Encodinglégèrement différentes. Le résultat est une efficacité du cache améliorée et des temps de réponse plus rapides pour les utilisateurs finaux.
Paramètres de compression par défaut de Fastly : une analyse approfondie
Lorsque vous vous inscrivez chez Fastly, certains paramètres de compression sont activés par défaut. Ces valeurs par défaut déterminent les types de contenu et les extensions de fichiers que Fastly compressera automatiquement s'ils arrivent non compressés depuis votre serveur d'origine.
Les types de contenu compressibles par défaut de Fastly incluent :
text/html|application/x-javascript|text/css|application/javascript|text/javascript|application/json|application/vnd\.ms-fontobject|application/x-font-opentype|application/x-font-truetype|application/x-font-ttf|application/xml|font/eot|font/opentype|font/otf|image/svg\+xml|image/vnd\.microsoft\.icon|text/plain|text/xml Les extensions compressibles par défaut sont :
"\.(?:css|js|html|eot|ico|otf|ttf|json|svg)(?:$|\?)"
Comment ces valeurs par défaut se comportent-elles dans le monde réel ?
Pour répondre à cette question, nous nous tournons vers le HTTP Archive, un ensemble de données mensuel qui recueille les résultats de WebPageTest pour environ 15 millions d'URL dans l'ensemble de données CrUX de Google.
Pour le jeu de données de juillet 2025, cette analyse a inclus un total stupéfiant de 25 milliards de requêtes au total. Ce riche ensemble de données a permis un examen détaillé des URL des requêtes, des extensions de fichiers et des en-têtes de réponse Content-Type / Content-Encoding afin d’évaluer l’efficacité de la compression.
Ce travail crée sur les recherches fondamentales de Steve Souders (2014), qui a également utilisé le HTTP Archive pour affiner et optimiser les paramètres Gzip de Fastly—poursuivant ainsi une quête de dix ans pour une meilleure performance web grâce à une compression plus intelligente.
"Une évaluation des données de l'archive HTTP pour Fastly indique que la majorité des extensions de fichier classées comme compressibles selon la configuration par défaut de Fastly sont, en pratique, livrées dans un format compressé à un taux élevé." Cette concordance entre la configuration et le comportement observé suggère que les paramètres par défaut de Fastly sont généralement efficaces pour optimiser la taille des transferts de contenu compressible.

Le format .ico constitue une exception notable. extension, qui présente un taux de compression relativement faible. Un examen plus approfondi révèle qu'une partie significative des ressources avec cette extension est servie avec le type de contenu image/png. Étant donné que le format PNG est déjà compressé sans perte, l'avantage supplémentaire d'une compression HTTP additionnelle est négligeable, ce qui explique probablement sa faible adoption. Le tableau ci-dessous détaille les types de contenu les plus fréquemment observés associés à .ico réponses.

Pour les ressources dont les extensions n’étaient pas incluses dans la liste compressible par défaut de Fastly, une proportion importante était encore servie compressée en raison de correspondances sur l’en-tête Content-Type. Par exemple, bien que le .php L'extension est absente de la liste par défaut, la plupart des fichiers .php les réponses dans l’ensemble de données étaient associées à des types de contenu tels que application/javascript, text/css, application/json et text/html — tous conformes aux règles de compression par défaut de Fastly. Les seuls types de contenu compressible fréquemment observés qui n'ont pas d'extension correspondante dans la liste par défaut étaient text/vtt et text/markdown. Le tableau ci-dessous résume les types de contenu les plus courants livrés par les clients de Fastly et indique s'ils seraient assortis par les règles de compression par défaut.

Paramètres de compression par défaut améliorés : sites plus rapides, coûts réduits
Bien que la configuration de compression par défaut de Fastly soit déjà très efficace, l'analyse des données de l'HTTP Archive a révélé des opportunités d'amélioration incrémentale. Sur la base de ces résultats, nous avons élargi les règles de compression par défaut pour accroître davantage la couverture et l'efficacité :
Extensions ajoutées aux valeurs par défaut
jsonp
txt
vtt
Types de contenu ajoutés aux valeurs par défaut
texte/* (caractère générique pour tous les formats basés sur le texte)
application/*json (caractère générique pour tous les types d'applications basés sur JSON)
application/*xml (caractère générique pour tous les types d'applications basées sur XML)
Ces ajouts permettent à Fastly de compresser automatiquement un ensemble encore plus large de contenus pertinents, réduisant ainsi davantage la taille des charges utiles — un double avantage : des performances de site plus rapides et des coûts de distribution réduits, le tout sans modifier une seule ligne de code.
Et nous ne nous arrêtons pas là. Nos équipe d’ingénierie surveillent et évaluent activement les technologies de compression émergentes telles que Zstandard et Compression Dictionary Transport afin d’identifier où elles peuvent livrer des gains supplémentaires en rapidité et en efficacité. Au fur et à mesure que le web évolue, les paramètres de compression intelligents par défaut de Fastly évolueront également, maintenant nos clients à la pointe des performances web.
Vous vous demandez ce que la compression intelligente de Fastly pourrait faire pour vos métriques de performance ? Contactez votre équipe de compte ou contactez-nous. Nous serions ravis de vous le montrer !
Ensemble de données de support
Le code SQL BigQuery utilisé pour extraire les statistiques de compression est fourni ci-dessous. L'exécution de cette requête traite environ 2 To de données (cette requête peut dépasser le niveau gratuit).
Pour réduire le volume traité et abaisser les coûts de requête associés, les clauses de filtre ‘is_root_page’ et ‘rank’ peuvent être décommentées pour limiter davantage l’ensemble de données.
WITH request_data AS (
SELECT
rank, page, url,
JSON_VALUE(payload._contentEncoding) AS encoding,
JSON_VALUE(summary._cdn_provider) AS cdn,
header_name.value AS content_type,
JSON_VALUE(summary.ext) AS ext,
JSON_VALUE(summary.type) AS type,
JSON_VALUE(summary.respBodySize) AS size,
FROM `httparchive.crawl.requests` ,
UNNEST (response_headers) AS header_name
WHERE
date = "2025-07-01"
--AND is_root_page = true
--AND rank <= 1000000
AND client= "mobile"
AND header_name.name = "content-type"
)
SELECT
ext,
content_type,
COUNTIF(encoding IN ('gzip', 'br')) AS compressed,
COUNTIF(ext IN ('css','js','html','eot','ico','otf', 'ttf', 'json', 'svg')) AS fastly_extension_defaults,
COUNTIF(REGEXP_CONTAINS(content_type,
'(text/html|application/x-javascript|text/css|application/javascript|text/javascript|application/json|application/vnd.ms-fontobject|application/x-font-opentype|application/x-font-truetype|application/x-font-ttf|application/xml|font/eot|font/opentype|font/otf|image/svg\\+xml|image/vnd.microsoft.icon|text/plain|text/xml)')
) AS fastly_content_types_defaults,
COUNTIF(ext IN ('css','js','html','eot','ico','otf', 'ttf', 'json', 'svg') OR REGEXP_CONTAINS(content_type,
'(text/html|application/x-javascript|text/css|application/javascript|text/javascript|application/json|application/vnd.ms-fontobject|application/x-font-opentype|application/x-font-truetype|application/x-font-ttf|application/xml|font/eot|font/opentype|font/otf|image/svg\\+xml|image/vnd.microsoft.icon|text/plain|text/xml)')) AS fastly_default_compressible,
COUNT(*) AS requests,
COUNTIF(encoding IN ('gzip', 'br')) / COUNT(*) AS pct_compressed
FROM request_data
--WHERE cdn = "Fastly"
GROUP BY 1,2
HAVING COUNT(*) > 1000
ORDER BY 3 DESC