Advertorial

Passgenau & hochperformant: Image Optimization mit Fastly in der Edge-Cloud
Keine Kommentare

Kein Pixel zu wenig oder zu viel: Inhaber großer Webseiten, etwa im E-Commerce-Umfeld, wissen: Die Auslieferung der korrekten Bilder für sämtliche Geräte ist ein zuweilen schwergewichtiger und hochkomplexer Prozess, der auf die Performance gehen kann. Billig ist es auch nicht gerade, für alle Bildformate und –variationen Cloud-Speicher zu buchen, allein die Kosten für die bearbeiteten Requests geraten schnell außer Kontrolle. Wie wäre es da, wenn wir die Komplexität der Bildbereitstellung durch einen leichtgewichtigen Web-Service kapseln könnten, der uns neben gesparter Mühe auch höhere Leistung bei gleichbleibender Qualität und reduzierten Kosten einbrächte?

Design & Backend

Die Webentwicklung hat sich in den letzten Jahrzehnten deutlich verändert. Der moderne User erwartet, dass die Inhalte auf einer sehr breiten Vielfalt von Geräten korrekt und schnell dargestellt werden. Responsives Webdesign ist heutzutage der Standard, um dieses Bedürfnis zu adressieren [1]. Doch nicht jedes Bild, das vom jeweiligen Endnutzer bzw. -gerät gefordert wird, liegt auch in der passenden Auflösung, Ausrichtung etc. physisch vor. Als Webentwickler muss man sich dann häufig zwischen schlechter (Bild-)Qualität oder enormen Aufwand in Sachen Bandbreite und Speicherkapazität entscheiden.

Für gewöhnlich werden die Bilder für responsives Webdesign von einem klassischen Content Delivery Network (CDN) bereitgestellt. Das Problem dabei: Herkömmliche CDNs sind intransparent für die Entwickler. Außerdem: je mehr Speicherkapazität für unterschiedlichste Bildgrößen gebraucht werden, desto mehr Kosten entstehen unterm Strich für deren Bereitstellung.

On the Edge

Egal, auf was für einem Gerät und in welchem Browser die Webseite schließlich beim Endnutzer aufgerufen wird, Performance ist alles. Und die hängt im Wesentlichen von der Schnelligkeit ab, Bilder bereitzustellen, denn mittlerweile sind rund 60% aller Inhalte auf Webseiten graphische Darstellungen. Das Ziel ist also logischerweise, Bilder möglichst in idealer Größe und Qualität auszuliefern, um die benötigte Ladezeit überall so gering wie möglich zu halten. Die „klassische Variante“ ist es, die Bilder bereits vorher für die verbreitetsten Geräte und Auflösungen zu erstellen und entsprechend zentral zu speichern. Nun stelle man sich einen Online-Shop mit 10.000 Artikeln vor – ein enormer und undankbarer Aufwand, denn Fehler schleichen sich, gerade bei einer solchen Anzahl an Bildern, schnell ein, und wenn sich doch etwas am Design ändert, wird (mindestens) eine neue Version jedes Bildes nötig, die dann auch erst wieder entsprechend erstellt und im Code referenziert werden muss.

Leichter und performanter ist da eine Edge-Cloud-Lösung wie Fastly [2] in Verbindung mit einem Image Optimizer [3], der nativ in die Edge-Cloud-Plattform eingebettet ist. Hierdurch wird die Optimierung von Bildern nicht manuell durchgeführt, sondern in unmittelbare Nähe des Endnutzers („Edge“ bedeutet hierbei die Schwelle zwischen Backend und Nutzer) ausgelagert. So wird unter anderem die dringend benötigte Geschwindigkeit sichergestellt, denn eine Studie von Adobe (The State of Content: Expectations on the Rise) hat ergeben, dass rund 40% der Nutzer eine Webseite wieder verlassen, wenn sie nicht oder Teile von ihr (etwa die Bilder) nur sehr langsam laden [4].

Nicht nur die Nutzer freuen sich über eine gute Performance der aufgerufenen Webseiten: Auch der Crawler von Google bemerkt den Unterschied zwischen lahmen Krücken und hochperformanten Websites. Und das kann am Ende – gerade bei Online-Shops von immenser Bedeutung sein, immerhin ist ein gutes Ranking bei Google essentiell, in manchen Fällen – insbesondere im E-Commerce-Bereich – überlebenswichtig. Wir befinden uns dabei im Bereich der Suchmaschinenoptimierung (SEO), bei der die Performance einer Homepage eine große Rolle spielt [5].

Aber nicht nur physikalisch, auch geographisch liegen die gewünschten Dateien an bestimmten real in der Nähe der Benutzer. Fastly besitzt derzeit 72 POPs, die über die gesamte Welt an strategischen Knotenpunkten des Internets verteilt sind und für eine hohe Geschwindigkeit sorgen [6].

Durch den Image Optimizer ist es zudem möglich, die Kosten für das Bilderhosting massiv zu verringern. Anstatt manuell sämtliche Bilder in den entsprechenden Formaten und mit den korrekten Einstellungen in der Cloud zu berechnen und vorzuhalten, erlaubt es der Image Optimizer von Fastly, Bilder erst bei Bedarf automatisch von der Edge Cloud bearbeiten zu lassen. Auf dem Hosting-Server lagert nur noch die hochauflösende Originaldatei. Beim ersten Aufruf des Bildes wird diese von der Fastly Edge Cloud beim Hosting-Server abgerufen und als optimierte Version ausgeliefert. Beide Versionen bleiben zunächst für eine individuell einstellbare Zeit im Cache der Edge Cloud. Auf diese Weise kann verhindert werden, dass durch etliche Aufrufe auf den Hosting-Server unnötige Kosten entstehen.

Nun ist aus den frühen Tagen von CDNs bekannt, dass eine solche Caching-Strategie die Flexibilität des Betreibers einer Webseite einschränkt, schnell auf Änderungen reagieren zu können. Es gibt allerdings – gerade in Webshops – durchaus Situationen, in denen ein Bild (etwa von einem Produkt) möglichst schnell von der Seite verschwinden, aber dennoch im Cache von Fastly verbleiben soll. Fastly verspricht durch ausgeklügelte Purge- bzw. Soft-Purge-Kapazitäten, die global innerhalb von 150ms durchführbar sind, den Nutzern niemals veraltete Daten zu liefern.

Auch an anderer Stelle kann durch den Einsatz der Image Optimization in der Edge Cloud gespart werden. So ist etwa weniger Personal notwendig, um die Bilder anzufertigen. Zudem ist eine eigene Bildbearbeitungssoftware nicht mehr notwendig, um Bilder für die unterschiedlichen Auflösungen von Devices und verschiedenen Bildvarianten anzupassen.

Durch all diese Maßnahmen werden die sogenannte Total Cost of Ownership (TCO) und die Prozesse zur Bereitstellung von Bildern erheblich reduziert, da sich Cloud-Anbieter jeden Aufruf und jedes Byte Speicherkapazität teuer bezahlen lassen und Personal sowie Software naturgemäß Kosten verschlingt.

Unter der Haube, auf der Homepage

Die grundlegenden Einstellungen für die Bildoptimierung kann man im Web-Interface oder über APIs von Fastly vornehmen. Nötige Änderungen können global, innerhalb von Sekunden, durchgeführt werden. Dort werden auch URL API query string parameter eingerichtet, die entsprechenden Webseiten zugeordnet werden, um die Bildoptimierung dann in Real Time durchzuführen. Für Frontend-Entwickler bedeutet dies, dass sie, nach der Einrichtung des API Headers auf eine Reihe von Parametern für die Bildoptimierung zurückgreifen können. Als Beispiel sei hier die Webseite herangezogen, auf der das Bild fastly.png unter dem URL https://www.entwickler.de/fastly.png zu erreichen ist. Würde man nun das Bild auf 150px mal 100px verkleinern wollen, würde der URL-API-Aufruf wie folgt aussehen: https://www.entwickler.de/fastly.png?crop=150,100 – Problem dabei: die größten Teile des Bildes sind nicht mehr sichtbar, da nur ein mittiger Abschnitt (75 Pixel vom Mittelpunkt des Bildes auf der X-Achse, 50 Pixel vom Mittelpunkt des Bildes auf der Y-Achse) von der Beschneidung verschont wurde. Möchte man das gesamte Bild verkleinern, so lautet die entsprechende URL https://www.entwickler.de/fastly.png?crop=1:1&width=200.

Alternativ kann man das Cropping auch intelligent vornehmen lassen. Hierfür kann der Wert smart für den Parameter crop verwendet werden. Hinter dem Wert smart steckt ein Algorithmus von Fastly, der den Fokus auf den wesentlichen Teil eines Bildes legt, das sogenannte Content-aware image cropping.

Eine kleine Auswahl, welche Parameter von Fastly zur Verfügung gestellt werden, zeigt Tabelle 1. Eine gesamte Übersicht findet sich in der entsprechenden Dokumentation [7].

Name Parameter Beschreibung
Width width Anpassung der Breite des Bildes.
Height height Anpassung der Höhe des Bildes.
Pixel Ratio dpr Bereitstellung des Bildes in der korrekten Größe für Geräte, die eine entsprechende Auflösung senden.

Tabelle 1: Parameter für die Bildoptimierung

Um die Konfiguration zu erleichtern, bietet Fastly eine große Menge an Profilen, die sich „Recipes“ nennen n. Etwas elaborierter als über das reine Web-Interface lässt sich die entsprechende Konfiguration mit der hauseigenen Varnish Configuration Language (VCL) von Fastly einstellen. Varnish fungiert quasi als Broker für die von Fastly optimierten Bilder zwischen dem Browser auf dem Endgerät und der Bildquelle. Entsprechend konfiguriert sorgt Varnish schließlich dafür, dass die gewünschten Ergebnisse auch beim User ankommen, also die mit den oben genannten Parametern modifizierten URLs funktionieren.

Image Transformation Classes

Noch einen Schritt weiter in Richtung KISS-Prinzip können Entwickler mit sogenannten Image Transformation Classes gehen [9]. Die oben genannten Beispiele und Kombinationen von URL-Parametern können bei großen Mengen an Bildern dazu führen, dass der Aufwand der Bearbeitung und des Hostings zwar wegfällt, allerdings der Aufwand des Referenzierens im HTML erheblich wird. Auch dafür gibt es eine recht einfache Lösung, die sich gerade für Seiten lohnt, bei denen sich die Bildprofile sehr oft wiederholen.

Nehmen wir einmal an, dass für die Bilder in einem Webshop drei unterschiedliche Profile vorhanden sein müssen: large, medium und small. Im large-Format soll das Bild im Seitenverhältnis 16:9 angezeigt werden, allerdings soll dieses Cropping nicht einfach von der Bildmitte ausgehen, sondern das wesentliche Produkt in den Fokus stellen. Dafür wird das bereits oben beschriebene Content-aware image cropping angewandt. Überdies soll das Bild im large-Format die Breite von 640 Pixeln nicht überschreiten. In der URL würde sich das wie folgt bemerkbar machen: https://www.fastly.io/transformation-class/image.jpg?crop=16:9,smart&width=640. Im medium-Format benötigen wir das Seitenverhältnis von 4:3 und die maximale Breite von 320 Pixeln, im small-Format ein Seitenverhältnis von 1:1 und eine maximale Breite von 100 Pixeln: https://www.fastly.io/transformation-class/image.jpg?crop=4:3,smart&width=320, bzw. https://www.fastly.io/transformation-class/image.jpg?crop=1:1,smart&width=100. Wir definieren zudem die Klasse default, bei der schlicht die maximale Breite des Bildes mit 640 Pixeln angegeben wird.

Anstatt nun an jeder Stelle, an der ein Bild gefordert wird, diese Parameter neu einzusetzen, lassen sich die Formate als Klasse definieren (Listing 1).

table io_classes {
    "large": "crop=16:9,smart&width=640",
    "medium": "crop=4:3,smart&width=320",
    "small": "crop=1:1,smart&width=100",
    "default": "width=640"
}

Nun kann man einfach an jede Bild-URL eine Klasse anhängen: https://www.fastly.io/transformation-class/image.jpg?class=large. Die Definition der default-Klasse sorgt dafür, dass das Bild maximal 640 Pixel breit sein wird, auch wenn in der URL keine spezifische oder aber eine falsche Klasse angegeben wird, etwa ?class=foo. Weitere Informationen dazu gibt es auf dem Blog von Fastly [8].

Abschließend sei noch erwähnt, dass sämtliche Services von Fastly natürlich auch mit hochauflösenden Bildern (etwa für Auflösungen bis 8K) kompatibel sind.

Weitere Informationen

Für wen das interessant klingt, der kann sich von Fastly einen Report erstellen lassen. Dieser zeigt potentiellen Kunden anhand realer Daten und Analysen, wieviel Bandbreite durch den Einsatz des Fastly Image Optimizers gespart werden kann [9]. Melden Sie sich dafür hier an.

Links & Literatur

[1] https://de.wikipedia.org/wiki/Responsive_Webdesign
[2] https://www.fastly.com/
[3] https://www.fastly.com/products/web-and-mobile-performance/image-optimization
[4] https://blogs.adobe.com/creative/files/2015/12/Adobe-State-of-Content-Report.pdf
[5] https://webmasters.googleblog.com/2020/05/evaluating-page-experience.html
[6] https://www.fastly.com/network-map
[7] https://docs.fastly.com/en/guides/image-optimization-api
[8] https://www.fastly.com/blog/getting-more-out-io-image-transformation-classes
[9] https://explore.fastly.com/lp/emea/io-de

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -