Je suis en train de mettre en œuvre un projet qui traite d'une quantité importante d'images.
À votre avis, quels sont les inconvénients des deux approches suivantes: p>
à l'aide de l'approche 1 Je peux accéder directement à l'image et c'est IT P>
<img src="same_directory/10.jpg" />
5 Réponses :
Je suis tenté d'utiliser la première approche car il n'y a pas de valeur réelle pour encombrer la base de données avec des données d'image. (La récupération des données de la base de données sera également nettement plus lente que la simple chargement du disque hors disque.) P>
Toutefois, comme une suggestion, vous ne voudrez peut-être pas stocker le chemin complet sur le disque sur l'image de la table de base de données, pour faciliter la transférabilité. (C'est-à-dire que vous stockez simplement la partie du chemin et du nom de fichier du fichier de base "connu".) p>
stocker sur le système de fichiers est plus rapide. p>
Gardez les fichiers image sous forme de fichiers d'image sur le serveur pour réduire votre charge de db et permettre au serveur de gérer la mise en cache, etc. Dans l'ensemble, cela dépend vraiment du type d'images dont nous parlons. Les petites miniatures (par exemple pour les icônes de fichier) ne seraient pas si mauvaises, mais je ne stockerais pas d'images entières dans la DB. En général, je suppose que l'approche du système de fichiers serait plus rapide. P>
permet d'enquêter sur le problème sur le navigateur Web. Lorsque vous chargez la page de 10 images enregistrées dans la base de données. Votre navigateur envoie une nouvelle demande HTTP au serveur. Chaque demande Demeure DB Connection et script côté serveur. Ou juste lire l'image statique du système de fichiers. p>
Qu'est-ce qui sera plus rapide? P>
Autre partie - Obtenez des données à partir du système de fichiers ou de la base de données. Si nous n'utilisons pas de cache pour la base de données (mais pour 10 Go d'images, vous devez disposer de 10 Go de RAM pour mettre en cache ces données). Le serveur de base de données et HTTP lit les données du système de fichiers dans tous les cas. Mais je pense que le navigateur HTTP lit les données plus rapidement, puis serveur de base de données. P>
Un seul inconvénient pour le stockage de la base de données - Très facile à migrer des données d'un serveur à d'autres. Mais cela n'a pas d'importance pour la performance du système. p>
Et n'oubliez pas de faire un chemin pour des images comme /a/b/c/abc.jpg - il sera plus rapide pour une grande quantité d'images, puis mettez toutes les images dans un répertoire. P>
Je n'ai pas mentionné la subdivision de l'annuaire mais je l'ai déjà à l'esprit.
Avantages de l'approche 1: strong> p>
Avantages de l'approche 2: strong> p>
Considérer l'approche de performance 1 est la meilleure pour procéder. P>
De manière générale, le stockage de grandes blobs dans la base de données entrave réellement les performances. Si toutes les images sont de très petits fichiers, ce n'est pas si mauvais.
Si toutes les images ne sont pas JPG, comprimez avant d'enregistrer dans la base de données.
Dupliqué possible de stocker des images comme fichiers ou Dans la base de données pour une application Web?