

Irgendwann wird aus einer Erfahrung ein Muster. Und aus einem Muster eine Entscheidung.
Nach dem x-ten Projektaudit mit denselben Symptomen, CLS-Werte im roten Bereich, Caching-Konflikte, jQuery-Relikte in ansonsten sauber optimierten Stacks, haben wir aufgehört zu suchen. Das Lightbox-Problem ließ sich nicht einkaufen. Also haben wir es selbst gelöst.
Das Problem, das keiner benennt
Es gibt Dutzende WordPress-Lightbox-Plugins. Die meisten lösen ein triviales Problem mit einer Architektur, die nach Theme-Framework riecht, nicht nach Komponente. Ein Plugin, das serverseitig in Templates eingreift, eine eigene JS-Library nachlädt und sich gegen Lazy-Loading und Cache-Optimizer behaupten muss, ist keine Lösung. Es ist ein Risiko im Produktivbetrieb.
Die Probleme, die wir in Projekten immer wieder gesehen haben:
- jQuery als Pflichtabhängigkeit, auch wenn das Theme sie längst nicht mehr braucht
- CSS, das ungefragt globale Stile überschreibt
- Caching-Bruchstellen, weil das Plugin DOM-Zustände serverseitig voraussetzt, die clientseitig nicht mehr existieren
- Layout-Verschiebungen durch nachgeladene Stile im kritischen Renderpfad
- Kein sauberes Verhalten bei dynamisch geladenen Inhalten
Das sind keine Randprobleme. Das sind strukturelle Schwächen, die in Produktionsumgebungen mit echtem Traffic zu messbaren Performance-Einbußen führen.
Die Eigenentwicklung
Wir haben kein Plugin gesucht, das möglichst viele Features hat. Wir haben eine Lösung gebraucht, die in fremden Stacks läuft, sich nicht mit Caching-Plugins prügelt und den kritischen Renderpfad in Ruhe lässt.
Die Anforderungsliste war kurz. Und kompromisslos:
- Zero Dependencies. Kein jQuery, kein Framework, keine externen Ressourcen
- Kein serverseitiger Eingriff. Kein PHP, das DOM voraussetzt oder manipuliert
- DOM-Scan im Browser. Bildanker werden clientseitig gelesen, Originaldateien sauber referenziert
- Laufzeit-Injection. Die UI-Schicht existiert erst dann im DOM, wenn sie gebraucht wird
- Zentrales Event-Handling via Event Delegation. Ein Listener. Nicht hundert
Das klingt nach wenig. Es ist nach viel Arbeit.
Was dabei entstanden ist
Das Ergebnis ist kein Plugin mit Konfigurationsseite, fünf Skin-Optionen und Premium-Version. Es ist eine schlanke, eigenständige Komponente, die genau eine Aufgabe hat und sie nicht vermasselt.
Sie liest den finalen DOM, den der Browser nach allen Optimierungen, Lazy-Loading-Kaskaden und Cache-Transformationen übrig lässt. Sie setzt keine Voraussetzungen über die Serverarchitektur voraus. Sie stört nichts.
In Agenturbetrieb ist das der Unterschied zwischen einer Lösung, die in der Demo funktioniert, und einer Lösung, die unter Last, in fremden Themes und mit kaputten Plugin-Landschaften zuverlässig läuft.
Was das für WordPress-Projekte bedeutet
Die meisten Performance-Probleme im WordPress-Umfeld entstehen nicht durch eine einzelne schlechte Entscheidung. Sie entstehen durch die Akkumulation von Komponenten, die jede für sich akzeptabel wirken und zusammen das Fundament unterhöhlen.
Eine Lightbox ist kein kritisches System. Aber sie ist ein Indikator. Wer bereit ist, für ein Bild-Overlay eine jQuery-Abhängigkeit in Kauf zu nehmen, trifft diese Entscheidung auch woanders. Das Lightbox-Problem ist selten nur ein Lightbox-Problem.
Für uns nicht mehr. Und für Sie?
Quellen
