Points clés à retenir
- Traitez la ressource produit originale comme la source de vérité et dérivez les variantes destinées aux canaux à partir d’une politique explicite.
- Séparez les sorties pour les listes de produits, les fiches produit, le zoom et les échantillons, car chacune a des besoins différents en matière de pixels et de chargement.
- Utilisez des identifiants stables de produit et de ressource dans les chemins de sortie plutôt que les noms de fichiers fournis par un navigateur.
Les médias produit deviennent coûteux lorsque chaque canal invente ses propres règles de recadrage, de format et de nommage. Un pipeline utile part de l’enregistrement du produit et produit un petit ensemble de dérivés choisi de manière réfléchie, dont le système de commerce peut gérer les chemins, les métadonnées et le cycle de vie.
L’essentiel
- Conservez l’état d’approbation et du catalogue dans l’application de commerce, tandis que Transloadit indique l’état du traitement et de l’exportation.
- Mesurez le volume en octets, le temps de traitement, le taux d’échec et la qualité visuelle par canal avant d’ajouter d’autres variantes.
Définir le contrat des médias produit
Partez des emplacements plutôt que des opérations. Une carte dans une liste de produits, une fiche produit, une visionneuse avec zoom, un échantillon, un e-mail, un flux pour une place de marché et une vidéo produit ont chacun une taille d’affichage, une politique de recadrage, une exigence de format et un budget de performance qui leur sont propres. Consignez ces exigences avant de choisir les Steps, afin que le Template exprime une règle produit plutôt qu’un empilement de transformations.
Conservez le catalogue de produits comme référence pour le SKU, les paramètres régionaux, l’approbation et la publication. Le pipeline de traitement doit recevoir une identité de ressource stable et renvoyer des dérivés vérifiés. Cette répartition permet au système de commerce de décider si un produit est prêt, tandis que Transloadit se concentre sur des opérations reproductibles sur les fichiers.
Nommer chaque emplacement
Consignez les dimensions, le rapport largeur/hauteur, la politique de recadrage, le format, la qualité et le nombre maximal d’octets pour chaque canal.
Versionner la source
Utilisez une version de ressource gérée par l’application afin qu’une nouvelle séance photo ne puisse pas écraser un dérivé publié de façon inattendue.
Fixer un budget
Mesurez le volume en octets et le coût de traitement avant d’ajouter un autre point de rupture ou une autre variante pour une place de marché.
Créer des dérivés avec des limites définies
Un flux de traitement courant accepte la source, la valide, crée des images pour les listes de produits et les fiches produit, prépare un dérivé plus grand pour le zoom lorsque cela se justifie, et encode séparément la vidéo produit. Conservez l’exportation de l’original pour pouvoir le retraiter, mais ne faites pas charger l’original par chaque page. Dans l’exemple, zoom: false empêche l’agrandissement au-delà des dimensions demandées. Utilisez le plus petit dérivé qui préserve les détails du produit à montrer à son emplacement.
Le recadrage nécessite une politique explicite. Un recadrage centré est prévisible, mais peut couper une partie d’un produit ; un point d’ancrage fondé sur l’attention ou l’entropie peut être utile pour certaines images ; utilisez /image/facedetect lorsque les coordonnées des visages sont requises, et effectuez tout de même un examen pour les catalogues à forte valeur. Stockez la politique de recadrage et la version de la source avec l’enregistrement du dérivé afin de pouvoir expliquer ultérieurement une différence visuelle.
{
"allow_steps_override": false,
"auth": {
"max_number_of_files": 1,
"max_size": 104857600
},
"steps": {
":original": {
"robot": "/upload/handle"
},
"accepted_image": {
"use": ":original",
"robot": "/file/filter",
"accepts": [["${file.mime}", "regex", "^image/(jpeg|png|webp)$"]],
"error_on_decline": true
},
"listing": {
"use": "accepted_image",
"robot": "/image/resize",
"width": 640,
"height": 640,
"resize_strategy": "fit",
"zoom": false,
"format": "webp",
"quality": 82,
"result": true
},
"detail": {
"use": "accepted_image",
"robot": "/image/resize",
"width": 1600,
"height": 1600,
"resize_strategy": "fit",
"zoom": false,
"format": "webp",
"quality": 86,
"result": true
},
"original_export": {
"use": "accepted_image",
"robot": "/s3/store",
"credentials": "catalogue-media",
"path": "catalog/${fields.product_id}/${fields.asset_version}/original-${unique_prefix}.${file.ext}",
"acl": "bucket-default",
"result": true
},
"listing_export": {
"use": "listing",
"robot": "/s3/store",
"credentials": "catalogue-media",
"path": "catalog/${fields.product_id}/${fields.asset_version}/listing.webp",
"acl": "bucket-default",
"result": true
},
"detail_export": {
"use": "detail",
"robot": "/s3/store",
"credentials": "catalogue-media",
"path": "catalog/${fields.product_id}/${fields.asset_version}/detail.webp",
"acl": "bucket-default",
"result": true
}
}
}Liste de produits
De petites images rapides à charger pour les grilles et les résultats de recherche, avec des dimensions adaptées à la disposition des cartes.
Fiche produit
La vue principale du produit, avec une résolution suffisante pour la page, sans transférer inutilement une image aux dimensions de l’original.
Zoom et vidéo
Générez ces sorties uniquement lorsque l’expérience en a besoin, et attribuez-leur une politique de chargement et de stockage propre.
Maintenir la fiabilité du routage et des chemins
Les chemins de sortie font partie du contrat du catalogue. Construisez-les à partir d’identifiants de produit et d’une version de ressource validée que votre application autorise, puis enregistrez les métadonnées des résultats dans le système de commerce. Ne laissez pas un nom de fichier ou un champ fourni par le navigateur déterminer où le dérivé d’un autre locataire est stocké ni à quel SKU il appartient.
Signer params.fields côté serveur ne protège pas ces chemins lorsqu’un navigateur soumet la requête. Les champs de formulaire multipart deviennent également des champs de l’Assembly et ne sont pas couverts par la signature, et un champ envoyé après params remplace la valeur signée portant le même nom. Le navigateur contrôle cet ordre. Comme l’exemple écrit les fichiers aux noms fixes listing.webp et detail.webp sous ${fields.product_id} et ${fields.asset_version}, une requête soumise par le navigateur pourrait écraser les dérivés d’un autre produit. Faites construire et soumettre l’intégralité de la requête d’Assembly par le serveur de l’application, y compris le téléversement et les valeurs product_id et asset_version non vides, autorisées et sûres pour les chemins, et ne transmettez pas de champs arbitraires du client.
Appliquez la même règle aux autres champs dynamiques. Gardez les dimensions fixes dans le Template ou utilisez un Template par ensemble de variantes approuvé ; les champs de la requête remplacent ceux définis dans le Template, donc seul le serveur doit les fournir. Enregistrer allow_steps_override: false dans le Template constitue une protection distincte : cela empêche la redéfinition des Steps à l’exécution lorsque vous utilisez template_id, mais ne vaut pas autorisation des valeurs des champs. Vérifier les clés de stockage renvoyées par rapport au préfixe attendu reste utile avant la publication dans le catalogue, mais ne peut pas annuler un écrasement effectué à une mauvaise clé ; protégez donc l’écriture elle-même.
Utiliser des chemins stables
Incluez un identifiant de produit et une version de ressource, et ne remplacez le pointeur du catalogue qu’après vérification de l’exportation.
Limiter les choix
Autorisez des dimensions et des variantes connues plutôt que des paramètres de transformation arbitraires provenant du navigateur.
Protéger les informations d’identification
Conservez les informations d’identification de stockage dans les ensembles d’informations d’identification de Template, et votre Auth Secret Transloadit sur le serveur qui soumet l’Assembly.
Publier à partir d’événements vérifiés
Un webhook indique à l’application qu’une Assembly a changé d’état ; il ne suffit pas à rendre un produit publiable. Vérifiez le webhook, récupérez le résultat fiable de l’Assembly, vérifiez que chaque dérivé requis existe avec les dimensions et le type MIME attendus, puis mettez à jour la fiche du catalogue uniquement après ces vérifications.
Les notifications peuvent être dupliquées, retardées ou manquantes. Le gestionnaire devrait pouvoir s’exécuter deux fois sans risque, tolérer les événements reçus dans le désordre et réconcilier l’état en cas d’événement manquant par interrogation ou par vérification périodique de l’état. C’est ce qui évite qu’un échec d’exportation laisse un produit pointant vers un ensemble d’images à moitié généré.
Vérifier
Vérifiez les signatures, l’identité de l’Assembly, les chemins de sortie, les dimensions, les types MIME et le nombre attendu de variantes.
Mettre à jour de manière idempotente
Utilisez l’identifiant du produit et la version de la ressource comme clé d’écriture afin qu’une nouvelle tentative ne puisse ni dupliquer une fiche du catalogue ni la ramener à un état antérieur.
Réconcilier
Utilisez une interrogation de l’état ou une tâche de réparation pour les événements retardés, dupliqués ou jamais observés.
Mesurer avant d’élargir l’ensemble de variantes
Consignez les dimensions des dérivés, leur taille en octets, le temps de traitement, les échecs et les résultats de l’examen visuel pour chaque emplacement. Comparez ces mesures aux objectifs de performance des pages et de conversion avant d’ajouter un point de rupture, un format ou une branche destinée à une place de marché.
Un contrat limité qui correspond aux emplacements réels est plus facile à mettre en cache, à migrer et à réparer qu’une matrice couvrant tout le catalogue et générée de manière spéculative. Conservez la source et la version de la ressource afin de pouvoir reproduire une modification ultérieure de la politique à partir de la même entrée.
Mesurer les octets
Comparez la taille de dérivés représentatifs aux budgets réseau et de décodage de chaque emplacement.
Examiner la qualité
Examinez les recadrages et la compression sur des produits représentatifs avant d’intégrer un dérivé à la publication.
Démarrer avec un Template Transloadit testé
L’exemple de ce guide accepte au plus une image, crée deux dérivés volontairement limités et exporte l’original accepté ainsi que chaque dérivé sous une clé versionnée distincte. Son filtre ne laisse passer que les types MIME JPEG, PNG et WebP et fait échouer l’Assembly pour tout autre type. Chaque exportation se trouve en aval de ce filtre, de sorte qu’un téléversement refusé n’est pas exporté vers S3. Le routage selon le type MIME ne constitue pas une vérification stricte du contenu ; validez les octets stockés dans votre application si votre contrat l’exige. Testez des images produit représentatives, puis ajustez les dimensions, la politique de recadrage, la qualité et la conservation à partir des exigences mesurées des canaux avant d’ajouter des branches pour le zoom ou la vidéo.
Créez un compte Transloadit et enregistrez les Assembly Instructions sous forme de Template. Créez un ensemble d’informations d’identification de Template pour S3 nommé catalogue-media en renseignant key, secret, bucket et bucket_region ; consultez les informations d’identification de Template pour la configuration. Gardez le bucket privé en activant Block Public Access ; acl: "bucket-default" omet l’ACL de l’objet et s’appuie sur la politique d’accès du bucket, ce qui ne suffit donc pas à rendre les objets privés. Faites soumettre l’Assembly par votre serveur de commerce avec des valeurs autorisées pour l’identifiant de produit comme pour la version de la ressource, vérifiez que chaque dérivé attendu existe au chemin versionné attendu, enregistrez le résultat de manière idempotente et mettez à jour le catalogue uniquement après la fin de l’exportation. Consultez les tarifs de Transloadit lorsque vous souhaitez estimer le traitement et le stockage nécessaires à votre catalogue.
Enregistrer la configuration d’exemple
Conservez le graphe de traitement et les informations d’identification de stockage dans un Template enregistré plutôt que de reconstruire les Steps dans le navigateur.
Publier après vérification
Utilisez les résultats vérifiés de l’Assembly et l’état d’approbation de votre catalogue comme conditions de publication de chaque version de ressource.
Détails techniques à connaître
- Une image plus grande n’est pas automatiquement une meilleure ressource pour le zoom ; les dimensions de sortie doivent correspondre aux exigences réelles d’affichage et de recadrage.
- La conversion de format, le redimensionnement et le recadrage peuvent être des étapes distinctes, avec des considérations différentes concernant la qualité et les échecs.
- Les notifications peuvent être dupliquées et ne font l’objet que de quelques tentatives de renvoi. L’application de commerce a donc besoin de vérifier les signatures, de traiter les résultats de manière idempotente et de réconcilier l’état en cas d’événements manquants.
- Le stockage appartenant au client reste le système de référence pour les fichiers exportés lorsqu’un flux de travail utilise le Robot /s3/store ou un autre Robot de stockage.
- La génération de variantes peut rapidement se multiplier selon les paramètres régionaux, les canaux, les points de rupture et les campagnes ; des politiques aux limites définies empêchent une croissance combinatoire accidentelle.
- La source et chaque dérivé doivent avoir une version stable afin que le remplacement d’une image produit ne puisse pas mélanger les anciennes et les nouvelles sorties.
- Une miniature de liste de produits nécessite normalement moins de données qu’une ressource destinée à une page de détail produit ou au zoom ; envoyer l’original à chaque emplacement entraîne des transferts et des opérations de décodage inutiles.
- Les chemins de sortie doivent être générés à partir d’identifiants de produit fiables et d’une version de ressource validée, plutôt que par interpolation de données arbitraires fournies par le client.
- Une Assembly terminée ne signifie pas qu’un produit est publié. Les mises à jour du catalogue doivent attendre la vérification des exportations et l’état d’approbation requis par l’application elle-même.
- Lorsqu’un canal ajoute un nouveau dérivé, mettez à jour le contrat et les tests au lieu de modifier silencieusement toutes les sorties existantes.
Une approche pratique
- 1
Définissez le contrat des dérivés pour chaque canal avant d’écrire le Template.
- 2
Faites soumettre la source par le serveur de commerce avec les champs product_id et asset_version autorisés, et conservez l’original accepté.
- 3
Générez le minimum de sorties nécessaires aux canaux actuels pour les listes de produits, les fiches produit, le zoom et la vidéo.
- 4
Ne publiez qu’après que l’application a reçu et enregistré de manière idempotente un événement d’exportation complet.
Quand Transloadit est utile
Faites créer et soumettre par votre serveur de commerce une Assembly à partir d’un Template qui valide, normalise, crée des branches et exporte des dérivés aux limites définies vers votre propre stockage. Si des personnes téléversent des fichiers via Uppy ou un autre client dans le navigateur, traitez cette opération comme une étape de réception distincte que votre application valide avant que son serveur ne soumette cet exemple de configuration d’exportation. Conservez le SKU, les paramètres régionaux, l’approbation et l’état de publication dans l’application de commerce.
Périmètre architectural
Transloadit prépare les médias produit et exporte des dérivés ; il ne fournit ni catalogue de produits, ni PIM, ni DAM, ni vitrine de vente en ligne, ni interface d’approbation, ni service de publication d’annonces sur les places de marché.
Questions fréquentes
Transloadit remplace-t-il un système de gestion des informations produit (PIM) ou de gestion des ressources numériques (DAM) ?
Non. Il traite des fichiers et exporte des dérivés. Conservez les attributs des produits, les approbations, les droits, l’état du catalogue et la recherche de ressources dans le système qui en est responsable.
Combien de variantes une image produit devrait-elle avoir ?
Commencez par les emplacements dont vous pouvez mesurer l’utilisation : généralement les listes de produits et les pages de détail produit, puis uniquement les sorties de zoom ou destinées à un canal qui ont un consommateur réel. Ajoutez des variantes lorsque les données relatives aux appareils, aux mises en page ou aux places de marché justifient leur coût de traitement et de stockage.
L’original doit-il être public ?
Généralement, non. Conservez l’original dans un stockage contrôlé et ne publiez que les dérivés et les chemins nécessaires à l’expérience produit.
Que se passe-t-il lorsqu’une image produit est remplacée ?
Créez une nouvelle version de la ressource, traitez-la, vérifiez toutes les sorties requises, puis modifiez le pointeur du catalogue. Conservez ou retirez la version précédente selon la politique de votre application.