Je déploie mon application web (c'est pour un client d'entreprise). Ainsi, les utilisateurs n'ajouteront pas d'images, mais seule l'entreprise le fera.
Je me suis déployé sur Heroku et mes images sont toujours visibles. Quand dois-je utiliser S3? Je vais avoir 100 images au total sur le site, et la taille variera comme> 7 par semaine. Puis-je utiliser uniquement Heroku?
La réponse courte: si vous autorisez des utilisateurs ou des administrateurs à télécharger des images, vous ne devez pas utiliser le système de fichiers Heroku pour cela car les images disparaîtront soudainement.
Comme expliqué dans la documentation Herok :
Chaque dyno obtient son propre système de fichiers éphémère, avec une nouvelle copie du code le plus récemment déployé. Pendant la durée de vie du dyno, ses processus en cours d'exécution peuvent utiliser le système de fichiers comme bloc-notes temporaire, mais aucun fichier écrit n'est visible pour les processus de tout autre dyno et les fichiers écrits seront supprimés au moment où le dyno est arrêté ou redémarré.
Cela signifie que les images téléchargées par l'utilisateur sur le système de fichiers Heroku sont non seulement effacées à chaque poussée, mais également à chaque redémarrage du dyno, ce qui arrive parfois (même si vous les cingler fréquemment pour les empêcher de dormir).
Une fois que vous commencez à utiliser un deuxième dyno Web, il ne pourra pas lire le système de fichiers de l'autre dyno, donc les images ne seront visibles que d'un seul dyno. Cela provoquerait des problèmes étranges où les utilisateurs peuvent parfois voir des images et parfois non.
Cela dit, vous pouvez temporairement stocker des images sur le système de fichiers Heroku si vous implémentez n téléchargement de fichiers pass-through vers un magasin de fichiers externe .
Pipeline d'actifs
La réponse de FiveDigit
est très bonne - il y a quelque chose de plus à considérer; le rôle des asset pipeline
dans Rails
Si les images que vous avez sont utilisées comme actifs (IE elles sont utilisées dans la mise en page; ne sont pas modifiables par l'utilisateur), alors vous pouvez les stocker dans le assets/images
dossier. Il n'y a pas de limite au nombre d'actifs que vous pouvez conserver avec votre application, mais vous devez être sûr de ce qu'ils sont - ce sont des fichiers qui facilitent le fonctionnement de votre application; pas fichiers pouvant être téléchargés/manipulés:
Le pipeline d'actifs fournit un cadre pour concaténer et réduire ou compresser les actifs JavaScript et CSS. Il ajoute également la possibilité d'écrire ces actifs dans d'autres langages et pré-processeurs tels que CoffeeScript, Sass et ERB.
Le pipeline d'actifs compresse et empreint les fichiers stylesheet
, image
et js
dont il dispose lorsque vous déployez votre application sur Heroku ou tout autre serveur. Cela signifie que si ces fichiers ne changent pas, vous pouvez les y stocker
-
S3
La raison pour laquelle vous souhaitez utiliser les goûts de S3
est spécifique si vos fichiers d'images sont conçus pour changer (l'utilisateur peut les télécharger/les modifier). Quel que soit le système de fichiers de Heroku, si les images sont liées à des changements dans la base de données, vous devrez garder un magasin central pour elles - si vous changez de serveur, elles doivent être accessibles
Pour ce faire, vous devez vous assurer que vous comprenez comment vous voulez que les fichiers fonctionnent - vont-ils être manipulés en permanence par l'utilisateur ou non? Si oui, vous devrez explorer l'intégration de S3
dans votre application