Hi,
- [...]
Vorteil dieser Methode:
- Grafiken stehen beim Aufruf sofort zur Verfügung
- es werden keine evtl. gigantischen Dateien gespeichert, sondern nur das, was Du brauchst.
- Du hast direkt nach dem Upload Kontrollmöglichkeiten das Aussehen betreffend. (Ist eigentlich der von Dir genannte Vorteil, aber IMHO deutlicher.)
- Die Skalierung muss nur ein Mal durchgeführt werden, nicht bei jeder Nutzung.
Nachteil:
- Im Verzeichnis liegen mehrere Ausfertigungen der gleichen Grafik
(Speicherplatzverbrauch)
Ja. Relativiert sich ggf. wegen obigem Vorteil.
- In den Datenbanktabelle brauche ich mehrere Spalten
(name,width,height)für jede Ausfertigung (Übersichtlichkeit)
Eine Datenbank muss nicht übersichtlich sein, dies ist also kein Faktor. Auch die DB-Performance dürfte bei einem günstigen Layout keinesfalls leiden.
- Wird einmal eine bestimmte (zusätzliche) Grafik-Größe benötigt,
steht sie nicht zur Verfügung. (Mangelnde Flexibilität)
Ja, das ist ein Faktor.
- [...]
Die Vor- und Nachteile dieser Methode sind das Gegenteil der Nach- und Vorteile obiger Methode.
Jetzt stehe ich vor der Frage ob Lösung 1 oder 2.
Wir stehen derzeit vor einem extrem ähnlichen (eigentlich fast identischen) Problem, haben aber keinen Zweifel daran, dass Lösung 1 die zu bevorzugende ist. Das einzige Problem (zumindest bei unserer Nutzung) ist, dass man nicht nachträglich skalieren kann. Solange aber selten bis nie andere Formate gebraucht werden, kann man damit gut leben. Falls es doch gelegentlich (mit schwer planbaren Formaten) nötig wird, müsste die Originaldatei _zusätzllich_ mit abgespeichert werden - Hauptsache, man muss nicht bei jedem Request die äußerst (ressourcen-)teure Bilderskalierung vornehmen.
Allerdings muss ich dazusagen, dass uns der Speicherplatz nicht im geringsten interessiert - wenn's nicht reicht, packen wir halt ein Raid mit ein paar hundert Gigabyte dazu ;-)
Wie sieht das aus, führt Lösung2 zu bedeutenden Geschwindigkeitsverlusten?
Ja, selbstverständlich. Eine Datei auszuliefern kostet den Server praktisch keine messbare Zeit; statt dessen ein Script zu starten, welches die Datei in den Speicher lädt, die Daten analysiert, in ein allgemeingültiges Format umwandelt, eine neue Größe errechnet, die Bilddaten geschickt umwandelt (dies kostet _wahnsinnig_ viel!), zurück in ein spezielles Format umwandelt und ausliefert, ist verdammt teuer.
In der Spitze werden bei einem Seitenaufruf ca. 10 Grafiken auf diese Weise eingefügt.
Waaah. Wenn jede zehnte Seite mal eine solche Grafik wäre, könnte man vielleicht über Methode 2 nachdenken :-)
Bitte sagt mir Eure Meinung. Ich sag schon mal Danke.
Methode 1.
Übrigens: Danke, dass Du nur Meta-Informationen in der DB speicherst, nicht die eigentlichen Grafikdaten :-)
Cheatah