Stoppen Sie die Szenen hängen die Registerkarte

Fixkamo-marketing
Shipped
6. September 2026 um 14:20 UTC
Author
Kamo
Commit
ab890f8

Berichten: "nach etwa einer Minute oder zwei die Seite sieht zu animieren weg dann animieren zurück und seine vollständig eingesperrt. Browser will die Registerkarte schließen". Verreduziert in der Code statt des Browsers; drei separate ganzseitige Gefahren, von denen eine ist die Ursache und zwei von denen warteten, bis sie an der Reihe waren. 1. useShelves zwang Layout auf Content-Sichtbarkeit Subbäumen Es nannte getBoundingClientRect() auf jedem passenden Element im Dokument, auf jedem Scroll-Rahmen. Dreiundzwanzig Elemente hinter einer rAF-Drosselklappe liest sich als nichts, weshalb es überlebt Überprüfung, und auf fast jeder anderen Website es wäre nichts. globals.css setzt "Content-Sichtbarkeit: auto" auf jeden "Hauptteil:nicht(#home) absichtlich, weil acht unter-die-fache Abschnitte gelegt werden, während die LCP-Bild gewartet wurde mit 1.810 ms Putzverzögerung gemessen. getBoundingClientRect ist eine Layout-Zwinger lesen, so fragen Sie es über ein Element in einem übersprungenen Unterbaum macht den Browser legen, dass Subbaum sofort zu beantworten, und dann überspringen wieder einmal, wenn es sich herausstellt, noch aus dem Bildschirm. Sechzig Mal pro Sekunde, für alle acht Abschnitte, es macht nicht nur die Optimierung rückgängig - es wandelt sie in eine wiederkehrende Kosten, die nie zuvor existierten. Die sichtbare Hälfte folgt aus der "Contain-Intrinsic-Größe: auto 900px": die Abschnitte wechseln zwischen ihrer erinnerten Höhe und dem Platzhalter, so dass die Dokumenthöhe schwingt, und jede "Animation-Timeline: view()" scroll zeigen auf der Seite wiederholt die geänderten Offsets. Das ist die Seite, die animiert weg und zurück. Die Compoundierung Layoutkosten ist die Sperrung. Es stellt jetzt nie eine Frage eines Elements, das nicht bereits gemacht ist. IntersectionObserver - der nichts erzwingt - hält die Reihe von Kandidaten in der Nähe der Ansichtsport, und nur dieser Satz wird immer gemessen. Elemente in einem übersprungenen Unterbaum sind nie drin. Die Kandidatenliste wird alle 3er statt jedes Frames neu aufgebaut. 2. wird-Veränderung: transform kam von den Überlandschichtschichten Es kaufte nichts, was nicht bereits bezahlt wurde: eine Leinwand Neuanstrich jeder frame bekommt seine eigene Compositing-Schicht unabhängig. Was es kaufte, war ein full-viewport Textur für die WASH-Schicht - ein statischer CSS-Gradistanz, der nie animates - gehalten für das Leben der Szene, mehrere Megabytes bei 1440p, auf einem Seite mit bereits neunzig-ungerade Hintergrund-Filter-Panels. 3. Mix-Blend-Modus kam aus allen fünf Szenen, die es verwendet Ein Blend-Modus auf einer festen Full-Viewport-Schicht lässt den Compositor das Ganze lesen Seite zurück jeden Rahmen, um sich dagegen zu mischen. Gating it to .quality === "full" war der richtige Instinkt in der falschen Tiefe; auf der Seite, wo ein ganzseitiger Effekt hatte gerade eine Registerkarte aufgehängt, Versand einer anderen kann ich von hier nicht messen Handel lohnt sich machen auf einer Vermutung. Nicht viel ist verloren - "Bildschirm" mit Weiß über eine dunkle Leinwand ist nah an dem, was schlichte Alpha zeichnet - und die Szenen, die brauchen additives Licht bereits tun es innerhalb der Leinwand mit "lighter", gegen die andere Partikel und nicht gegen das Dokument. UND A WATCHDOG, weil die nächste nicht durch Überprüfung gefunden werden entweder useSceneCanvas misst nun das reale Rahmenintervall - nicht die von der "dt" überreicht Szenen, die eingeklemmt ist und so kann nie berichten Probleme - und wenn die Seite kann 15fps über zehn ununterbrochene Sekunden halten, stoppt die Szene für immer, klärt sich vom Bildschirm und sagt, warum in der Konsole. Zehn Sekunden sind lang genug dass ein GC oder ein anderer Tab, der die CPU stiehlt, nicht stolpern kann, kurz genug, dass ein Leser bekommt ihre Seite zurück, bevor er nach dem Schließknopf greift. Die Flagge latches, so dass die Rückkehr auf die Registerkarte nicht neu starten eine Szene in die Bedingungen die es verhungerte, und eine Stand-Down-Szene hört auf, seine Sprites auf der Größe wieder aufzubauen. Achtzehn Leinwand-Szenen gegen Live-DOM-Geometrie auf Hardware niemand hier hat gesehen wird wieder in irgendeiner Weise keiner von uns vorhergesagt scheitern. Das entscheidet was das kostet: eine ungurlose Seite, keine unbrauchbare. Ebenfalls behoben: "Niemals 0" wurde dokumentiert, während nur die Decke eingeklemmt war. Zwei rAF-Rückrufe können einen Zeitstempel teilen, und eine Szene, die sich durch dt teilt, um eine Rate zu erholen bringt eine Unendlichkeit in eine Position. Bodenständig bei 1/480s. Kein gewöhnlicher Besucher war betroffen - heute beschließt, keinen Urlaub, so war dies nur erreichbar durch die Fußgänger-Picker. tsc sauber, 14 Wachen grün, 187 Routen noch prerendered.

All changes

Wie, was Sie sehen Versand?

Jedes dieser Updates landet automatisch in Ihrem Arbeitsbereich. Starten Sie frei und beobachten Sie es Woche für Woche wachsen.

Free Forever startenPreisgestaltung anzeigen