J'ai un site Web qui va héberger des milliers d'images. Non seulement cela, mais chaque image a une taille différente selon l'endroit où vous êtes dans la page Web - sur la page de liste, l'image est affichée en rectangle 350x200, sur les images de la barre latérale sont 100x100 etcComment gérer différentes tailles d'image sur un site Web
Ainsi quand un utilisateur télécharge un image sur le site, je garde l'original et fais 4 copies redimensionnées pour chaque taille. Donc, si 100 utilisateurs téléchargent une image, le résultat sera de 500 images. Je ne peux pas penser à ce qui se passera avec les différentes tailles des différents appareils mobiles ...
J'ai commencé à utiliser CloudFront pour optimiser la vitesse. Et quand un utilisateur télécharge une image, je télécharge l'original et les copies redimensionnées dans le compartiment Amazon S3. Mais si demain je décide d'ajouter une autre taille, ou de modifier une taille existante, je dois exécuter un script qui supprime les anciennes images et les nouvelles images, ce qui signifie "récupérer l'original de S3, le redimensionner, télécharger le nouvelle taille ". Ce n'est pas pratique du tout. Imaginez que lorsque j'effectue une refonte complète du site Web et que la taille des images change complètement, il me faudrait exécuter un script qui redimensionne chaque image selon les nouvelles exigences et supprimer les vieilles images.
Existe-t-il un moyen plus pratique d'y parvenir?
Je voulais acheive le scénario suivant:
- Lorsque l'utilisateur télécharge une image, je remets à la côte et le télécharger à S3
- CloudFront prendra les images qui sont redimensionnées directement
- Quand je ajouter une autre taille, je veux que CloudFront voit que cette taille est manquante sur S3 et la retirer d'une origine de mon site web.
Je n'arrive pas à trouver un moyen de l'implémenter. Toute aide ou partage des meilleures pratiques sera apprécié.
Une option peut être simplement de stocker l'image ayant la résolution la plus élevée, puis de générer dynamiquement d'autres tailles * "à la volée" *. J'ai fait un petit script PHP qui montre le genre de chose, sauf que vous passeriez un nom de fichier d'image et la largeur et la hauteur comme paramètres et appelez l'une des méthodes 'imagecopyresampled()' de PHP https://stackoverflow.com/a/25835507/ 2836621. Un autre exemple https://stackoverflow.com/a/30573825/2836621 –
Nous vous remercions de votre suggestion. J'ai oublié de mentionner que j'ai fait exactement cela (voir mon commentaire sur la réponse de John Rotenstein). Si c'est la seule bonne solution, je vais le laisser tel quel. Je pensais juste qu'il y a quelque chose que je ne peux pas penser. –