Changelog v1.10.3
Datum: 09.02.2026
🔗 Crawler: Sidebar-Widget führt direkt zum laufenden Crawl
Problem
Das globale Crawler-Status-Widget in der Sidebar verlinkte auf die allgemeine Crawler-Seite. Bei fehlendem oder falschem Kontext wurde nur das leere Startformular angezeigt statt der Fortschrittsanzeige mit Abbrechen-Button.
Lösung
- Sidebar-Widget verlinkt jetzt direkt zum aktiven Crawl-Job
- Automatische Erkennung: Die Crawler-Seite findet laufende Crawls jetzt auch ohne manuelle Auswahl und zeigt sofort Fortschritt und Abbrechen-Button
- Admins sehen alle laufenden Crawls systemweit
🐛 Bugfix: Zombie-Einträge in der Crawl-Queue
Problem
Wenn eine URL bereits gecrawlt war, aber erneut in der Queue auftauchte, wurde sie übersprungen — allerdings ohne ihren Queue-Status auf „erledigt" zu setzen. Das führte zu zwei Problemen:
- Aufgeblähter Seitenzähler: Übersprungene URLs wurden fälschlich als gecrawlt mitgezählt
- Endlose Verarbeitung: Die gleichen Queue-Einträge wurden immer wieder aufgegriffen, ohne dass tatsächlich etwas passierte
Lösung
Übersprungene Duplikate werden jetzt korrekt als „erledigt" markiert und nicht mehr zum Seitenzähler addiert.
📊 Neu: Abschluss-Grund bei Crawls
Bisher war nicht erkennbar, warum ein Crawl beendet wurde — ob alle Seiten gecrawlt waren oder ob das gesetzte Limit erreicht wurde. Jetzt wird der Grund gespeichert und angezeigt:
- Queue leer — Alle erreichbaren Seiten wurden gecrawlt
- Seitenlimit erreicht — Die gewünschte maximale Seitenanzahl wurde erreicht
In der Crawl-Übersicht wird bei „Queue leer" zusätzlich angezeigt, wie viele Seiten tatsächlich erreichbar waren vs. wie viele gewünscht waren (z.B. „4.000 / 150.000 erreichbar").
⚡ Performance: Linkstruktur-Tab massiv beschleunigt
Problem
Der Linkstruktur-Tab war bei großen Crawls (10.000+ Seiten) extrem langsam oder lud gar nicht. Bei einem 10k-Crawl mit 2,2 Millionen internen Links kam es regelmäßig zu Timeouts (120+ Sekunden).
Ursachen
- Datenbank: Aggregations-Queries über Millionen von Datensätzen bei jedem Seitenaufruf
- Graph-Berechnung im Browser: O(n²)-Algorithmus mit 300 Nodes × 150 Iterationen blockierte den UI-Thread
Lösung: Vorberechnung beim Crawl-Abschluss
Alle rechenintensiven Daten werden jetzt einmalig am Ende des Crawls vorberechnet und als Cache gespeichert:
- Link-Statistiken (Gesamtzahl, Durchschnitt, Verteilung)
- Linkjuice-Verteilung nach Seitenebene
- Graph-Nodes (Top 300 Seiten nach eingehenden Links)
- Graph-Edges (Verbindungen zwischen den Top-Nodes)
Beim Öffnen des Tabs werden die Daten direkt aus dem Cache geladen — keine Abfragen mehr auf die Links-Tabelle. Die Ladezeit sinkt von 120+ Sekunden auf unter 1 Sekunde.
Weitere Optimierungen
- Graph-Rendering: Grid-basierte Abstoßungsberechnung statt O(n²), Map-Lookup statt Array-Suche, Edge-Limit auf 2.000
- Progressives Laden: KPIs, Charts und Tabellen erscheinen sofort, der Graph wird im Hintergrund berechnet
- Timeout-Handling: Bei Ladefehlern wird eine Fehlermeldung mit „Erneut versuchen"-Button angezeigt
- Fallback für alte Crawls: Crawls ohne Cache berechnen die Daten live, wobei Edges nur bei ≤5.000 Seiten live geladen werden
Migration für bestehende Crawls
Bestehende abgeschlossene Crawls haben noch keinen Cache. Um die Vorberechnung nachzuholen, einmalig die bereitgestellte Migration ausführen. Danach laden auch alte Crawls den Linkstruktur-Tab in unter 1 Sekunde.
🗄️ Neue Datenbank-Indexes
Zwei neue Compound-Indexes für schnellere Abfragen bei großen Crawls. Die Index-Migration sollte nach dem Update erneut ausgeführt werden.