Architecture classique (avant)
├── wp-content/uploads/2025/09/photo.jpg
├── wp-content/uploads/2025/09/photo-150x150.jpg
├── wp-content/uploads/2025/09/photo-300x200.jpg
├── wp-content/uploads/2025/09/photo-768x512.jpg
├── wp-content/uploads/2025/09/photo-1024x683.jpg
└── wp-content/uploads/2025/09/photo-1536x1024.jpg
(jusqu'à 8-10 variantes générées par WordPress à chaque upload)
Architecture avec CDN d'images (après)
├── wp-content/uploads/2025/09/photo.jpg (seul fichier original stocké)
└── CDN : images.exemple.fr/photo.jpg?w=300&fit;=cover
(chaque taille est générée à la demande, mise en cache au premier appel)
Ce schéma résume le changement d’architecture au cœur de cet article : au lieu de générer et stocker à l’avance une dizaine de tailles pour chaque image uploadée, comme le fait WordPress nativement via add_image_size(), un CDN d’images génère la taille demandée à la volée, à partir d’un unique fichier original, et met en cache le résultat pour les demandes suivantes. Ce fonctionnement s’oppose au CDN d’assets classique, qui se contente de distribuer des fichiers statiques déjà générés sans transformation.
Trois solutions, trois architectures
imgproxy est un logiciel open source auto-hébergeable, écrit en Go, qui expose une API de transformation d’image via des URL signées. Il s’installe sur son propre serveur ou conteneur, ce qui donne un contrôle total sur l’infrastructure mais impose de la maintenir soi-même, contrairement aux deux solutions suivantes.
Cloudflare Images est un service géré qui combine stockage, transformation à la volée et distribution CDN en une seule offre, facturée au nombre d’images stockées et au nombre de transformations uniques servies, avec une intégration native si le domaine est déjà derrière Cloudflare.
Bunny Optimizer, adossé au CDN Bunny, propose un fonctionnement proche, avec une facturation davantage basée sur la bande passante consommée, une option intéressante pour les sites au trafic international déjà clients de ce CDN pour leurs autres assets.
Intégrer la transformation à la volée avec srcset

L’intégration ne modifie jamais le cœur de WordPress : elle intercepte les URL générées nativement pour les réécrire vers le domaine du CDN d’images, avec les paramètres de taille appropriés, via le filtre wp_calculate_image_srcset et wp_get_attachment_image_src.
add_filter( 'wp_calculate_image_srcset', function( $sources ) {
foreach ( $sources as $width => $source ) {
$chemin = wp_parse_url( $source['url'], PHP_URL_PATH );
$sources[ $width ]['url'] = 'https://images.exemple.fr' . $chemin . '?w=' . $width . '&q;=80&format;=auto';
}
return $sources;
} );
Le paramètre format=auto, supporté par les trois solutions étudiées, laisse le CDN choisir automatiquement le meilleur format selon le navigateur du visiteur (AVIF, WebP ou JPEG en repli), sans que WordPress n’ait besoin de générer lui-même ces variantes de format.
Comparatif de coûts
| Solution | Modèle de facturation | Maintenance |
|---|---|---|
| imgproxy auto-hébergé | coût du serveur uniquement | à la charge de l’équipe technique |
| Cloudflare Images | par image stockée + par transformation unique | entièrement gérée |
| Bunny Optimizer | principalement par bande passante | entièrement gérée |
Sur un site à fort volume d’images mais peu de variantes de taille différentes demandées (un blog éditorial classique), Bunny s’est révélé le plus économique dans nos tests. Sur un site avec un très grand nombre de tailles distinctes générées dynamiquement (une marketplace avec zoom produit à plusieurs niveaux), Cloudflare Images a montré une facturation plus prévisible grâce à son modèle par transformation unique mise en cache, plutôt que reproportionnelle au trafic brut.
Gain de stockage mesuré
Sur un catalogue de 15 000 images produit, le passage d’un stockage de toutes les variantes générées nativement par WordPress à un stockage du seul fichier original a réduit le volume total de la médiathèque de 87 %, un gain particulièrement appréciable sur un hébergement facturant le stockage au gigaoctet ou limitant l’espace disque disponible.
En résumé
Un CDN d’images change l’équation du redimensionnement WordPress : au lieu de multiplier les variantes stockées à l’avance pour chaque taille possible, une seule image source suffit, transformée à la demande et mise en cache. Le choix entre solution auto-hébergée et service géré dépend surtout de la capacité de l’équipe à maintenir une infrastructure supplémentaire, le gain de stockage et de simplicité de gestion des médias restant, lui, acquis dans les trois cas.