WordPress Gutenberg : uploads massifs, un cauchemar technique
État des lieux : Gutenberg et les uploads massifs, un fiasco technique
Vous venez de passer une heure à trier 60 photos pour votre dernier article WordPress. Vous glissez joyeusement vos fichiers dans le bloc “Galerie” de Gutenberg, pensant que l’éditeur moderne va tout gérer en un clin d’œil. Erreur fatale. Vingt minutes plus tard, vous êtes face à une cascade d’erreurs JSON, des timeouts Cloudflare, et une moitié de vos images portée disparue. Frustrant ? Inacceptable pour un CMS comme WordPress. Cet article décrypte pourquoi Gutenberg échoue sur les uploads massifs et comment y remédier.
Symptômes : un parcours du combattant pour les uploads massifs
Tentez d’uploader plusieurs dizaines de photos via le bloc “Galerie”, et voici le chaos qui vous attend :
- Erreurs
La réponse n'est pas une réponse JSON valide
, souvent dues à des requêtes REST interrompues. - Codes HTTP :
504 Gateway Timeout
ou502 Bad Gateway
, notamment avec Cloudflare. - Surcharge serveur via PHP-FPM, avec des pics de CPU ou de mémoire.
- Requêtes REST
/wp-json/wp/v2/media
concurrentes, provoquant des conflits. - Images partiellement uploadées, certaines n’apparaissant jamais dans la galerie.
Le pire ? La même opération dans la médiathèque (upload.php
) fonctionne parfaitement. Pourquoi ? Parce qu’elle utilise
, qui traite les fichiers séquentiellement, contrairement aux appels REST parallèles et chaotiques de Gutenberg.async-upload.php
Diagnostic : Gutenberg, mal conçu pour les lots de fichiers
Le problème ne vient ni de WordPress en général, ni de votre serveur, mais de la conception de Gutenberg :
- Requêtes REST massives : Gutenberg envoie des dizaines de requêtes POST vers
/wp-json/wp/v2/media
en parallèle, saturant les ressources serveur. - Limites des proxys : Cloudflare impose un timeout de 100 secondes par requête, même en mode “nuage gris”. Une image lente (par exemple, lors de la génération de miniatures) peut faire échouer toute la séquence.
- Absence de gestion des lots : Contrairement à
async-upload.php
, Gutenberg n’ordonnance pas les uploads, rendant le système vulnérable aux serveurs lents ou aux disques surchargés.
Le problème d’upload de Gutenberg vient du module @wordpress/media-utils
, qui utilise apiFetch()
sans file d’attente. Une solution durable nécessiterait un patch upstream dans le Core WordPress, via une Pull Request sur le dépôt GitHub de Gutenberg.
Pourquoi ce silence des développeurs ?
Ce problème d’upload massif n’est pas nouveau. Des utilisateurs le signalent depuis des années sur le Trac WordPress et dans des issues GitHub. Pourtant, l’équipe Gutenberg semble sourde à ces plaintes, concentrée sur des fonctionnalités comme les blocs dynamiques ou l’interface utilisateur, plutôt que sur des cas d’usage concrets comme ceux des photographes ou des médias manipulant des lots d’images. Cette focalisation sur un usage “blog individuel” ignore les besoins des utilisateurs professionnels, poussant les développeurs indépendants à bricoler des solutions palliatives.
Solutions de contournement : retrouver un workflow fluide
1. Uploader via la médiathèque (upload.php)
La médiathèque utilise async-upload.php
, qui traite les fichiers un par un. Allez dans Médias > Ajouter un fichier média, uploadez vos images, puis insérez-les dans une galerie Gutenberg. Simple, stable, mais cela brise le flux intégré de l’éditeur.
2. Limiter les uploads parallèles avec un script
Un script JavaScript pourrait intercepter les requêtes REST /wp/v2/media
et les sérialiser pour éviter les conflits liés aux uploads parallèles. Mais cette solution n’est pas native et peut entrer en conflit avec d’autres plugins qui modifient ou étendent le fonctionnement de apiFetch()
. De plus, elle peut nécessiter une maintenance régulière pour rester compatible avec les évolutions de Gutenberg.
3. Modifier le comportement natif de Gutenberg
Surchargez le composant MediaUpload
via un filtre JavaScript, mais il s’agirait d’un hack fragile (car dépendant de l’API interne de Gutenberg, qui peut changer à chaque mise à jour) qui peut casser l’intégration moderne et poser des problèmes d’affichage.
4. Explorer les plugins tiers
Certains plugins de galerie (comme Envira Gallery, Modula ou NextGEN Gallery) contournent les limitations de Gutenberg en utilisant leurs propres systèmes d’upload. Ils offrent souvent des interfaces optimisées pour les lots d’images, avec des options comme l’upload par glisser-déposer ou la gestion hors Gutenberg. Testez-les pour voir s’ils répondent à vos besoins, mais vérifiez leur impact sur les performances.
Conclusion : une régression à corriger
L’upload de médias est une fonction essentielle pour un CMS. Pourtant, Gutenberg transforme cette tâche simple en cauchemar pour les photographes, journalistes et blogueurs manipulant des lots de fichiers. En comparaison, l’ancien éditeur et async-upload.php
restent des modèles de stabilité.
Les solutions proposées – du contournement rapide au plugin sur mesure – permettent de retrouver un workflow fluide. Mais elles ne masquent pas une réalité : Gutenberg doit évoluer pour répondre aux besoins des utilisateurs professionnels. En attendant un correctif officiel, faisons avancer WordPress !
Laisser un commentaire