molily: Seite erst laden, dann anzeigen?

Beitrag lesen

ich habe eine Homepage, die auf eine sehr umfangreiche Datenbank zugreift. Daher läd die Seite relativ lang. Das ist eigentlich kein Problem.
Aber gibt es irgendwie die Möglichkeit, die gesamte Seite erst zu laden und sie dann komplett anzuzeigen?

Wo liegt genau das Problem? Was meinst du mit Ladezeit?

1. Das serverseitige Programm braucht lange zur Generierung des HTML-Dokuments.
2. Das HTML-Dokument ist einfach groß, braucht also lange in der Übertragung zum Client. Das Dokument wird daher nur stückchenweise im Browser angezeigt.

An Fall 1 kannst du clientseitig mit JavaScript nicht drehen, an Fall 2 wie gesagt auch nur kosmetisch.

Fall 1 kannst du nur mit verbesserten Serverprogrammen, Datenbank-Optimierung, Query-Caches und wasweißich bekämpfen.
Zu Fall 2 solltest du die Architektur in Frage stellen: Warum müssen soviele Daten zum Client übertragen werden? Ist HTML das angemessene Format dazu? Was ist mit JSON oder XML, die clientseitig transformiert werden? Oder ist das letztlich nicht schneller? Kannst du den HTML-Code verkleinern und komprimieren (GZip)?

Wenn ein Link angeklickt wird kommt immer einer Seite mit dem Inhalt "Seite wird geladen", die nach x Sekunden auf die Seite weiterleitet, die bereits im Hintergrund geladen wurde.

Das löst man mit Ajax (XMLHttpRequest).
Allerdings deckt XMLHttpRequest nur den Serverrequest und das Bereitstellen der Serverantwort als JavaScript-String ab.
Jetzt musst du die Serverantwort noch ins Dokument einmontieren. Wenn der Server mit einem HTML-Schnipsel antwortet, kannst du es z.B. mit innerHTML ins Dokument schreiben. Das dauert aber wieder seine Zeit, vor allem, wenn der String riesig ist. Der Browser muss den Code parsen und rendern. Mit einem Ladebalken, der vom Starts des Requests bis zum vollständigen Eintreffen der Serverantwort angezeigt wird, deckst du auch nicht die gesamte tatsächliche »Ladezeit« ab.

Mathias