Seite 17 - Web Performance
-
Maxim Mironjuk
-
April 21, 2025
Structured Clone kopiert Daten standardmaessig bei jedem postMessage-Aufruf, was bei grossen Binaerdaten spuerbar Zeit kostet. Transferable Objects loesen das durch einen Ownership-Wechsel statt einer Kopie. Dieser Artikel zeigt die Transfer-Liste von postMessage, das neuere ArrayBuffer.prototype.transfer() und typische Fehlerquellen mit detached Buffers.
-
Maxim Mironjuk
-
April 17, 2025
Ein einzelner Node-Prozess kann tausende WebSocket-Verbindungen für GraphQL Subscriptions halten, doch sobald mehrere Server-Instanzen hinter einem Load Balancer laufen, verliert ein Publish-Event den Kontakt zu Clients auf anderen Prozessen. Redis Pub/Sub, Kafka und ein sauberes Verbindungsmanagement lösen dieses Fan-Out-Problem und machen GraphQL Subscriptions horizontal skalierbar.
-
Maxim Mironjuk
-
April 15, 2025
Mit :has() kann CSS erstmals ein Element anhand seiner Nachfahren oder nachfolgenden Geschwister auswählen, eine Fähigkeit, auf die die Sprache jahrelang gewartet hat. Diese Mächtigkeit hat aber einen Preis: :has() zwingt den Browser, für jeden Kandidaten einen kompletten Teilbaum zu durchsuchen, statt nur einen einzelnen Knoten zu prüfen, was in großen DOM-Bäumen spürbar werden kann.
-
Maxim Mironjuk
-
April 12, 2025
Wer preload, prefetch und preconnect wahllos im Head verteilt, verschenkt genau die Bandbreite und Prioritätsklasse, die für die wirklich kritische Ressource gebraucht wird. Dieser Artikel erklärt, wie der Preload Scanner des Browsers arbeitet, wann welcher Resource Hint tatsächlich sinnvoll ist und wie sich Overuse mit Chrome DevTools zuverlässig erkennen, messen und vermeiden lässt.
-
Maxim Mironjuk
-
April 06, 2025
Die Network Information API liefert mit navigator.connection Informationen über Verbindungstyp, geschätzte Bandbreite und aktivierten Datensparmodus, damit Anwendungen Bildqualität, Prefetching und Video-Auflösung dynamisch anpassen können. Die einst parallel existierende Battery Status API wurde dagegen aus Datenschutzgründen aus den meisten Browsern entfernt, dieser Artikel ordnet beide APIs realistisch ein und zeigt praxistaugliche Alternativen.
-
Maxim Mironjuk
-
April 05, 2025
Prozess-Parallelisierung mit pcntl erlaubt es PHP CLI-Skripten, echte Betriebssystem-Prozesse zu erzeugen und CPU-gebundene Arbeit tatsächlich gleichzeitig auf mehreren Kernen auszuführen. Wer pcntl_fork, pcntl_wait und Signal-Handling beherrscht, baut Worker-Pools, die Warteschlangen leeren, Batch-Jobs verarbeiten und dabei sauber herunterfahren, statt Zombie-Prozesse zu hinterlassen.
-
Maxim Mironjuk
-
März 30, 2025
Ohne feste Schwellwerte schleicht sich Performance-Verfall über Monate unbemerkt ein, ein neues Skript hier, ein zusätzliches Bild dort. Ein Performance Budget macht Ladezeit, Core Web Vitals und Bundle-Größe zu harten Kriterien, die jeder Merge Request erfüllen muss, bevor er in Produktion geht.
-
Maxim Mironjuk
-
März 28, 2025
Eine falsch konfigurierte Elasticsearch oder OpenSearch Installation bremst jede Kategorieseite und jede Facettensuche in Magento spürbar aus. Dieser Artikel zeigt, wie Index-Mapping, Shard-Größen, JVM-Heap und Query-Muster die tatsächliche Antwortzeit bestimmen, wie man mit der Explain API und Cluster-Health-Checks Engpässe findet, und wie man teure Wildcard- und Fuzzy-Queries in der Layered Navigation vermeidet.
-
Maxim Mironjuk
-
März 25, 2025
Nuxt Image abstrahiert die Bildoptimierung hinter einer einzigen Komponenten-API, lässt aber offen, welcher Provider die eigentliche Transformation übernimmt: der eingebaute IPX-Provider verarbeitet Bilder direkt auf dem eigenen Server, während Cloudinary und imgix als externe CDN-Dienste die Arbeit auslagern und dafür eigene Kosten- und Skalierungsmodelle mitbringen. Welcher Provider passt, hängt weniger von der Bildqualität als vielmehr vom Traffic-Volumen, der globalen Verteilung der Nutzer und der bereits vorhandenen Infrastruktur ab.
-
Maxim Mironjuk
-
März 24, 2025
Phil Karlton wird das Zitat zugeschrieben, es gebe nur zwei schwere Dinge in der Informatik: Cache-Invalidierung und die Benennung von Dingen. In verteilten Systemen mit mehreren Cache-Layern, CDN, Anwendungs-Cache und Datenbank-Cache, wird dieses Problem noch einmal deutlich komplexer, weil jede Schicht ihre eigene Invalidierungslogik und ihre eigene zeitliche Verzögerung mitbringt. Wer Time-based und Event-based Invalidierung sowie Cache-Tagging gezielt kombiniert, kann das Problem beherrschbar machen, auch wenn es sich nie vollständig auflösen lässt.
-