Mit Intermedia Fotoficient bietet Pixelboxx eine extrem schnelle Möglichkeit, Bilder schnell an Webapplikationen auszuliefern. Dabei spielt es keine Rolle, ob es sich um eine normale Webseite oder einen Webshop handelt. Dieser Beitrag soll zeigen, wie der Intermedia Fotoficient Server Bilder im (mit Caching auch einstelligen) Millisekundenbereich ausliefert und wie Webseiten davon profitieren können.
Dynamisch erstellte Bilder werden aktuell im Internet nicht überwiegend genutzt. Das Problem liegt an der Performance, einzelne Bilder “on the fly” zu berechnen und in einem passenden Zeitrahmen auszuliefern. In den meisten Fällen werden (z.B. in CMS Systemen) Bilder in diversen Auflösungen einfach vorberechnet und in allen evtl. benötigten Formaten auf den Server gelegt.
Unsere kleine aber rasannte Reise in die Welt der dynamisch erstellten Internetbilder erfolgt in vier Schritten:
- 1. Schnelle Pixel-Transformation
- 2. Effiziente Kommunikation
- 3. Auf ein Minimum redizierte Dateigröße
- 4. Effektive Seitenberechnung
1. Schnelle Pixel-Transformation
Schnelle dynamische Bilder benötigen schnelle Pixel-Transformationen – das ist offensichtlich. Aber was macht diese Pixel-Transformationen schnell?
Die Intermedia Fotoficient Transformations-Engine ist flink wie ein Wiesel
Als die Transformations-Engine konzipiert wurde, lag die Priorität der Entwicklung auf der Geschwindigkeit. Intermedia liefert ein Bild schneller aus, als der Apache Webserver eine statische Datei ausliefern kann. Aber was sind die Geheimnisse dieser Architektur?
Weniger ist mehr
Intermedia verwendet einen sehr effizienten internen Speicher und Caching Mechanismus. Wir speichern nicht nur die generierten Ergebnisse, sondern auch Zwischenschritte, die auf Bildfragmenten beruhen. Dies sind gute Ausgangspositionen, sollte eine leicht abgewandelte Version eines Bildes benötigt werden. Keine Operation mit einem Bild ist isoliert von einer anderen im Intermedia Framework.
Der Client ma(h)lt zuerst
Im Gegensatz zu diversen anderen Bildtransformations-Frameworks, übergibt Intermedia zuerst die Daten (per Filestream) an den Client (jpeg, gif, png, xml oder json), bevor es die Daten in den Cache schreibt. Auf diese Weise muss der Client nicht darauf warten, dass Intermedai die Daten in den Speicher geschrieben hat. Die meisten anderen Frameworks prodizieren zuerst die lokale Datei mit den Transformationen und liefern erst im Anschluss den Inhalt aus. Sich auf den lokalen Chache zu verlassen ist ein Fehler, weil andere Prozesse auf dem Server diesen ausbremsen können. Intermedia hat interne, speicherbasierte PixelProcessoren, die keinerlei Dateien für die Transformationen benötigen.
Pixel wiederverwerten
Speicher und Cache verwalten nicht nur die fertigen Bilder, sondern auch die Zwischenschritte. Durch eine Prüfung, welcher Teil der Transformation wieder benötigt wird, verwenden wir die Pixel erneut für grundliegende Transformationen.
2. Effiziente Kommunikation
Weil das HTTP Protokoll sehr gesprächig ist, zählt jedes Byte. Vergessen Sie nicht, dass Requests ein Teil des Auslieferungsprozesses sind. Je kleiner der Request, umso schnelle die Auslieferung.
Eine magische Wand heißt MTU (maximum transfer unit) des TCP Protokolls. Bei Ethernet/DSL basierten Medien hat die MTU eine Größe von 1400 Bytes. Ist ein HTTP Request größer als 1400 Bytes, muss TCP den Request in mehrere Packete aufteilen. Das hört sich erst einmal nicht schlimm an, verlangsamt allerdings den Prozess.
Ein einfacher Request für ein Bild muss nicht größer als 1400 Bytes sein. Dieser besteht aus ein paar Headern:
Weitere sind nützlich für den Bild Request:
- Accept
- Accept-Encoding
- Accept-Language
- User-Agent
Folgende Header sind für den Bild Request nutzlos, werden aber trotzdem übertragen:
Einer der größten Header ist der Cookie. Wenn die eigene Applikation keine Informationen aus dem Cookie benötigt, setzt man einfach den Bildserver in eine andere Domain, um den Cookie zu umgehen.
Hinweis:
Jeder dieser Header wird bei jedem einzelnen Request verwendet und belegt diverse Bytes. Intermedia reduziert die Header bei der Antwort auf diese Requests auf ein Minimum.
Beispiel, bei dem nur der Server optional ist:
HTTP/1.1 200 OK
Server: Intermedia Fotoficient
Date: Tue, 28 Dec 2010 20:55:24 GMT
Expires: Tue, 28 Dec 2010 21:55:24 GMT
Cache-Control: max-age=3600, public, must-revalidate
Content-Type: image/png
ETag: "f2ebe9b7332cc739fdf103609872685b"
Content-Length: 9802
3. Auf ein Minimum redizierte Dateigröße
Ein Bild besteht nicht nur aus Pixeln. Alle Bildformate unterstützen Header bzw. Metadaten. Das JPEG Dateiformat ist das Format mit dem höchsten Verbrauch an unnötigen Daten. JPEG, PNG und GIF Dateien haben einen Header, welcher für Textinformationen bzw. Kommentare reserviert ist. Intermedia übernimmt die Kontrolle über dieses Feld und setzt die Informationen über die Quelle so kurz wie möglich. Bei JPEG Dateien gibt es noch andere Informationen, die möglicherweise eingebunden sind: IPTC, EXIF, XMP und ICC/colormanagement. Diese verbrauchen evtl. einige Kilobyte an Speicher. Speziell der XMP Teil wird mit Daten regelrecht zugepflastert (machmal mit bis zu 32 Kilobyte). Wenn man sich eine Thumbnail-Bildvorschau eines Produktbilder in einem Webshop anschaut, hat dies in einigen Fällen nur 2 Kilobyte an Bilddaten, aber 32 Kilobyte an Metadaten. Intermedia generiert Bilddaten, die nur die nötigen Pixelinformationen inkl. des oben genannten Inhalts. Das Orginalbild inkl. aller Metadaten bleibt natürlich unangetastet.
4. Effektive Seitenberechnung
Um Bilder im Internet darzustellen benötigt man Webseiten, die diese Bilder referenzieren. Wie kann Intermedia dabei helfen, diesen Mechanismus effizienter zu nutzen? Intermedia verwendet kurze URLs, die leicht gecached werden können. Es wird immer eine kurze ID (shortkey id) für ein Bild verwendet, um keinen einzigen Buchstaben in der URL zu verschwenden. Sämtliche URLs sind kurz aber dennoch lesbar.
Mit dem Bootloader kann man Ansammlungen von Bildern in RIA-Widgets verwenden und auf diese Weise eine große Anzahl von Bildern in einem einzigen Request zu verarbeiten (Voraussetzung hierfür ist ein moderner Browser). Wenn diese Technik richtig eingesetzt wird, kann man den Seitenaufbau um Faktor 2 beschleunigen.
Zur Webseite von Intermedia Fotoficient