WEBcoast Logo

Verzögerte Bildverarbeitung für TYPO3 CMS

In einem meiner letzten Projekte wollte ich die Bilder gerne mittels <picture>-Tag einbinden um verschiedene Bildquellen für die verschiedenen Bildschirmgrößen und Pixeldichten anzubieten. Das führte allerdings zu ca. 10 verschiedenen Bildquellen pro eingebundenem Originalbild. TYPO3 CMS führt die Bildverarbeitung währen der Seitenerzeugung durch. Aufgrund der vielen Varianten pro Bild steigt damit die Zeit für die Seitenerzeugung auf ein Vielfaches. Das passiert zwar nur für die Bildvarianten, die noch nicht erzeugt wurden, der Fall tritt aber doch immer mal wieder ein, z.B. wenn ein neues Bild hinzukommt oder die erzeugten Bildvarianten gelöscht werden müssen.

I suchte also eine Lösung um die Bildverarbeitung von der Seitenerzeugung zur Anfrage der konkreten Bildvariante zu verschieben. Nach meiner Recherche stellt sich heraus, dass es bisher keine Extension hab, die eine entsprechende Funktionalität bietet. Daher habe ich EXT:deferred_image_processing entwickelt. Die Extension registriert einen sog. image processor, der der lokalen Bildverarbeitung vorgeschaltet wird und damit die Aufträge für das Erstellen der Bildvarianten abfängt und diese zur Verarbeitung vormerkt. Wenn der Client (Browser) das Bild anfragt, werden die vorgemerkten Verarbeitungsanweisungen anhand der URL gefunden und die lokale Bildverarbeitung gestartet. Nachdem das Bild verarbeitet wurde, werden die Bilddaten an den Client zurück gegeben.

Einen kleinen Nachteil hat das Ganze. Da die Bildverarbeitung erst bei der Anfrage auf die konkrete Bildvariante startet, dauert das erste Laden einer Bildvariante minimal länger als wenn es direkt vom Web-Server ausgeliefert würde. In meinen Tests war der Unterschied allerdings nicht so groß und definitiv das kleinere Übel im vergleich zu den langen Ladezeiten ohne diese Extension.

Die Extension ist sowohl über das TER als auch auf packagist.org verfügbar.