suit: Warum blinken Browser immer vor dem Anzeigen einer neuen Seite?

Beitrag lesen

Danke vielmals für Eure Antworten.

Das tun sie nicht immer, sondern in Abhängigkeit vom Geschick des Content-Erstellers.
OK und was muss dieser beachten, damit er sich geschickt anstellt?

Verringere die komplexität des Quelltexts und beschleunige den Ladevorgang - wie Beat schon schrieb:

JavaScript möglichst weit nach unten (und außen) im HTML-Baum - idealerweise kurz vor dem schließenden body-Tag.

Das hat aber dann den Nachteil, dass sich die Seite während des progressive enhancement ggf. noch visuell verändern kann, besonders wenn das JavaScript später das DOM ergänzt.

Weiters: korrigiere die Reihenfolge im CSS so, dass die Verarbeitungsanweiseungen für frühere und weiter außen im Baum liegende elemente vorher im CSS stehen.

»»Tun sie doch, und gerade darum wird ja der Bildschirm oft kurzfristig blank.

Meiner mach sollte der Browser so einzustellen sein, dass er, wenn an einer bestimmten, noch gelben, Position etwas Blaues hinkommt, direkt von Gelb nach Blau schaltet und dazwischen nie etwas Weisses zu sehen ist.

CSS-Files werden idR. strikt progressiv und sequentiell abgearbeitet - ansonsten würde das Konzept nicht funktionieren.

Zuerst kommt das Browser-Default-Stylesheet - da steht bei den meisten Browsern drin, dass das html-Element (oder das body-Element) einen weißen Hintergrund haben - dann wird die nächste Regel gelesen die ggf. den hintergrund grün macht, dann gelb und dann braun.

Je nachdem wie schnell der Browser die Regeln verarbeitet, desto weniger Flackern hast du.

Ordentliche Browser sind einerseits extrem schnell und nutzen andererseits den Cache sehr gut.

Opera läd z.B. eine Seite primär aus dem Cache und baut sie erst später um sofern der HTTP-Request nach einem etwaigen CSS-File etwas anderes als Not Modified zurückliefert - sprich wenn sich ein CSS-File geändert hat, wird trotzdem erst mit dem alten, schon geparsten CSS gearbeitet und das dann später ersetzt. Das das fällt bei kleinen Änderungen weiter weniger auf, hat aber den Vorteil dass bei keiner Änderung (was auch zu erwarten ist) die Seite immer sofort da ist.

@suit: Du meinst das ist voll Browser-abhängig?

Nein, aber ein großteil davon ist Browserabhängig: so schlecht kann die Seite garnicht sein, in Opera springt, zuckt und blinkt idR. nichts.

Gegenteilig: so gut kann die Seite garnicht sein, im IE6 wird sie immer "blinken".

Kann man das nicht irgendwie beeinflussen, vielleicht mit einem Header (serverseitige Einstellungen) oder JavaScript?

Du bist lustig: was erwartest du dir?

<meta name="magic-stuff" content="render-me-fast-please" />

Also nochmal:

Du kannst _unmöglich_ egal was man dir erzählt das Flackern wegbekommen, es wird immer einen langsamen Rechnern mit schlechtem Browser geben. Du kannst den Effekt aber durch schlanken und sinnvoll gestalteten Quellcode minimieren.

Z.B. zusätzlich zu Hintergrundbildern auch noch Farben definieren. Ist dein Hintergrund irgend ein Karbon-Muster? Kein Problem, dann pack einfach irgend ein Schwarz oder Grau in ähnlicher Farbgebung rein, dann fällt es nicht so auf, dass die Grafik erst ein paar ms später geladen wird.