Wie kann man die Ladezeit von Headless-Browsern durch das selektive Blockieren von Ressourcen (Images, CSS, Fonts) auf Netzwerkebene optimieren?

Die Optimierung der Ladezeit von Headless-Browsern erfolgt primär über die Request-Interception. Wir implementieren in Frameworks wie Puppeteer oder Playwright einen Interceptor, der jede ausgehende Netzwerkanfrage prüft und basierend auf dem Resource-Type filtert.

In Puppeteer wird dies über page.setRequestInterception(true) realisiert. In Playwright nutzen wir page.route(). Sobald eine Anfrage einen Typ wie image, stylesheet oder font aufweist, wird die Anfrage mit request.abort() abgebrochen, bevor der Browser die Daten anfordert.

RessourcentypAuswirkung auf LadezeitEmpfehlung für Scraping
ImagesHoch (Bandbreite & Rendering)Blockieren
CSSMittel (Layout-Berechnung)Blockieren (außer bei JS-abhängigen Elementen)
FontsGering bis Mittel (Rendering)Blockieren
XHR/FetchKritisch (Datenquelle)Zulassen

Durch diesen Ansatz reduzieren wir die Netzwerklast und beschleunigen das Erreichen des domcontentloaded-Events. Da viele moderne Webseiten massiv auf externe Fonts und hochauflösende Bilder setzen, sinkt die CPU-Last des Headless-Browsers, da die Rendering-Engine weniger Assets verarbeiten muss.

Diese Technik ist ein zentraler Baustein in unseren Projekten im Bereich Data Engineering, wenn es darum geht, große Datenmengen effizient aus dynamischen Webseiten zu extrahieren.

Ein wichtiger Aspekt ist die Abhängigkeit von CSS. Einige moderne Frameworks verbergen Inhalte oder setzen Sichtbarkeiten erst nach dem Laden bestimmter Stylesheets. Wir prüfen daher vorab, ob die Ziel-Daten im DOM auch ohne CSS-Rendering vorhanden sind, um Fehlfunktionen beim Parsing zu vermeiden.

Wir empfehlen, die Ressourcen-Blockierung bei hoher Skalierung nicht auf Applikationsebene, sondern über einen dedizierten HTTP-Proxy zu steuern. Dies entlastet den Browser-Prozess vollständig und ermöglicht eine zentralisierte Verwaltung der Blocklisten über mehrere Browser-Instanzen hinweg, was die Performance-Gewinne gegenüber der nativen Interception signifikant steigert.

Sergej Wiens

Sergej Wiens

Gründer & Software Architekt