Je porte un ancien site de commerce électronique sur MVC 3 et je voudrais profiter des améliorations de conception. Le site a actuellement des images de produits stockées en 3 tailles: miniature, moyenne (pour affichage dans une liste) et développée pour un look zoomé. En ce moment, nous devons télécharger 3 images distinctes qui sont exactement de la bonne taille, fournir 3 noms différents qui correspondent à ce que le site attend, etc., c'est pénible.
Je souhaite télécharger un seul fichier, le plus grand, puis laisser le site le réduire aux tailles nécessaires, et j'aimerais avoir la possibilité de modifier la taille des miniatures et des listes en fonction des préférences de l'utilisateur, du facteur de forme (par exemple mobile, iPad , ordinateur de bureau), etc. peut donc nécessiter plusieurs copies de la même image. Ma question est de savoir si l'image doit être réduite puis enregistrée plusieurs fois lors du téléchargement et si oui, quelle est une bonne convention de stockage / de nommage?
L'autre idée est de stocker uniquement l'image unique mais de la redimensionner par programme avant de la servir au client. Quelqu'un at-il fait cela et quels sont les compromis à part quelques cycles de machine supplémentaires? Comment passez-vous une image temporaire en mémoire au client (il n'y a pas d'URL)?
Processeur d'image
Imageprocessor est une bibliothèque légère et extensible écrite en C # qui vous permet de manipuler des images à la volée à l'aide de .NET
Redimensionnement à la volée:
ImageProcessor.Web est livré avec la mise en cache en standard. Toute image traitée est mise en cache de manière asynchrone à la fois dans le navigateur et sur le serveur pour une durée de votre choix. Le cache du serveur stocke intelligemment des millions d'images et se met à jour silencieusement en cas de changement de l'image d'origine ou d'expiration du cache.
la source
En supposant que la vignette est simplement une version redimensionnée de l'image principale, je pense que cela devrait être fait au moment du téléchargement, mais peut-être planifié comme un travail d'arrière-plan afin de ne pas avoir d'impact sur les autres processus. Si vous redimensionnez à la volée, assurez-vous de mettre en cache l'image.
Le hic dans tout cela est que la meilleure vignette pour certaines images n'est pas un simple redimensionnement du maître; vous devrez peut-être zoomer et recadrer d'une manière qui est conduite par l'homme. Vous voudrez peut-être le redimensionnement automatique, mais avoir un mécanisme qui permet un remplacement dans ces cas particuliers.
la source
Une légère variation sur ce qu'Adam a mentionné:
(1) créer une page d'erreur personnalisée (règle pour les images)
(2) La structure des noms de fichiers image doit être:
La seule exception est l'image d'origine et doit être nommée:
(3) Lors du téléchargement de fichier, par exemple: 1245_Original -> tous les fichiers avec 1245_ * doivent être supprimés
(4) La page d'erreur personnalisée (en supposant que 1245_Original Exists) devrait créer dynamiquement le fichier image demandé, par exemple:
et le servir également la première fois.
En effet, le téléchargement d'une nouvelle image purge le cache.
la source