Ich möchte die GD-Bibliothek in meinem PHP-Skript verwenden, um ein kleines Vorschaubild eines zufälligen großen Bildes von einem externen Server zu erzeugen. Jedes Mal, wenn die Seite aufgerufen wird, erstellt die GD-Bibliothek ein Thumbnail neu und zeigt es an.
Wird dies den Server verlangsamen oder eine ungewöhnliche Menge an Speicher verbrauchen?
GD verwendet viel Speicher. Es lädt das Bild vollständig in den Speicher und dekomprimiert es, so dass Sie mindestens 32 Bit pro Pixel benötigen. Ein Bild mit der Größe 800 x 600 verbraucht dann:
800 * 600 * 32 Bit = 15,4 Megabit = 2 MB
Dies ist nur um das Bild zu laden. Ich habe gehört, dass es das Doppelte davon verwenden wird, wenn Sie die Größe ändern, und wenn Ihre Bilder noch größer sind, wird es noch mehr Speicher sein.
Sie sollten wirklich überlegen, Ihre Thumbnails zwischenzuspeichern, so dass sie nur einmal generiert werden müssen (dies beschleunigt die Seite auch für Ihre Besucher!).
Ich lese jetzt auch, dass Sie die Bilder von einem externen Server laden. In diesem Fall müssen Sie wirklich das Bild zwischenspeichern, weil Ihre Besucher sonst warten müssen, bis SIE das komplette Bild zuerst herunterladen. Dies wird noch schlimmer, wenn der externe Server heruntergefahren oder überlastet ist und Ihre Besucher auf eine Zeitüberschreitung warten müssen (das sieht so aus, als ob Ihr Dienst langsam ist). Darüber hinaus verschwenden Sie viel Bandbreite, wenn Sie das Bild jedes Mal herunterladen, wenn ein Benutzer eine Miniaturansicht anfordert.
Da GD so viel Speicher verbraucht, kann es sich lohnen, stattdessen die Vorschaubilder mit der Erweiterung IMagick zu erstellen. ImageMagick skaliert viel besser in Bezug auf Speicherverbrauch und ist auch sehr schnell (aber Sie sollten die Bilder aus den oben genannten Gründen immer noch zwischenspeichern).
Hängt davon ab, was Sie damit machen, aber versuchen Sie es doch einmal selbst:
Jede Art von Bildverarbeitung ist wahrscheinlich speicherintensiv.
Wenn Sie diese Bilder zwischenspeichern können, um sie nicht bei jedem Treffer auf der Seite neu zu generieren, wäre das ein guter Schachzug.
Eine PHP-Bibliothek, die eine Menge von diesem Caching für Sie erledigt, ist phpThumb - es ist wahrscheinlich ideal für solche Aufgaben.
Wenn Sie bei jedem Laden eine neue Miniaturansicht erstellen, wird zusätzliche Verarbeitungszeit benötigt. Abhängig von der Menge der Bilder, die Sie thumbnailing, sowie ihre ursprünglichen Größen, können Sie oder nicht, Langsamkeit bemerken. Wenn es trotzdem möglich ist, das Thumbnail auf der ersten Seite zu erstellen, zu laden und zu speichern und die vordefinierte Version für andere Seitenladevorgänge zu laden, geht es Ihnen besser.