Seite lädt ewig Elemente beim öffnen

Hallo,

ich habe eine Webside mit PHP und MySQL erstellt und ein seltsames Problem, was nur beim IE (bis IE7) auftritt.
Ich mache eine Suchanfrage und gebe die Ergebnisse auf einer HTML Seite aus und im IE steht unten in der Statusleiste das noch 170 Elemente geladen werden obwohl alles zu sehen ist.
Das dauert dann ca. 20s und erst dann kann ich mit der Seite arbeiten, warte ich diese Zeit nicht ab, gibt es Probleme mit dem Aufruf meiner Lightbox und der Variablenübergabe…
Auch wenn ich den IE Cache auf automatisch habe und er die Seite schon im Cache hat, lädt er diese 170 Elemente…
Das was er da nachlädt sind Variablen, die er eigentlich schon im PHP-Teil auf dem Server ausführen sollte…
Liegt es daran, dass ich im HTML mein PHP ausführe (<?php echo... ?>) und aus einem Array Daten ausgebe??? Wenn ich diesen Teil rauslösche lädt er keine Elemente nach.
Ab IE8 besteht das Problem nicht mehr, kennt jemand dieses Problem???

Danke im Voraus
Thomas

Das Nahcladen von Elementen bedeutet immer, dass der Browser versucht weitere Dateien, die zur Webseite gehören nachladen will. Dazu zählen *.css-, *.js-, *.htm[l]- und *.php-Dateien (z.B. bei Frames) sowie Bilder, Flash usw. Alleine die Ausgabe von Variablen selbst stellt kein Nachladen von Elementen dar, es sei denn du gibst jedesmal einen Teil aus, der dafür sorgt, dass weitere Dateien nachgeladen werden müssen (man kann ja z.B. ein img-Tag ausgeben, was dafür sorgt, dass ein weiteres Bild geladen werden muss).

Ein anderes Problem kann sein - da weiß ich allerdings nicht genau, ob das beim IE8 nicht auch noch so ist - dass die Standardeinstellung in Windows bei 2 gleichzeitigen Verbindungen pro Domain liegt. Sprich: Wenn du 180 Elemente auf www.domain.tld liegen hast, lädt er maximal 2 Stück zur Zeit und erst danach weitere. Man kann diesen Wert über die Registry hochstellen, allerdings muss man ja davon ausgehen, dass nicht jeder Besucher auf der Webseite dies getan hat. Da ich aber meine, dass das eine Windows-Einstellung ist, wäre es unlogisch, wenn der IE8 dies ignoriert. Da bin ich allerdings nicht ganz im Bilde.
Umgehen könnte man dies jedoch, wenn man über mehrere Subdomains auf die Seite zugreifen könnte, denn wenn ich z.B. 2 Subdomains habe, kann ich je 90 Elemente über jede Subdomain abrufen lassen, was die gleichzeitig geladenen Elemente schonmal verdoppelt.

Nächstes Problem würde sich dann tatsächlich auf PHP beziehen, hängt aber von der Verwendung auf deiner Seite ab: Wenn du PHP zur Generierung deiner Bilder benutzt, um z.B. dynamisch ein Wasserzeichen einzufügen, kann es zu Verzögerungen kommen, wenn du überall Sessions nutzt. Dabei liegt das Problem dann darin, dass PHP alle Anfragen, die auf die gleiche Session zugreifen nacheinander abarbeitet, statt parallel. Der Grund ist ganz einfach: Solange die Session offen ist könnten weitere Daten in die Session geschrieben werden, was dann zu einer Inkonsistenz führen würde. Also wird das zweite Script, das auf die gleiche Session zugreifen will erst ausgeführt, wenn das erste Script beendet wurde. Abhilfe wäre hier an der Stelle, ab der keine weitere Änderungen in der Session vorgenommen werden, die Funktion session_write_close() aufzurufen. Danach werden allerdings keine Änderungen an der Session mehr gespeichert, sodass in weiteren Scripten nicht auf Elemente zugegriffen werden kann, die nach dem Aufruf dieser Funktion eingebracht wurden.

Letzte Möglichkeit, die mir einfällt: Wenn du PHP nutzt, um dynamisch Wasserzeichen in die Bilder einzubringen, wird vermutlich bei jedem Aufruf des Bildes das Bild selber neu geladen, da PHP von Haus aus dem Browser mitteilt „Ich bin dynamisch und verändere meinen Inhalt bei jedem Aufruf“ (im übertragenen Sinne), was dazu führt, dass der Browser bei jedem neuen Aufruf des Elements nicht den Cache verwendet, sondern immer das Bild neu lädt - ob sich der Inhalt jetzt wirklich verändert hat oder nicht. Man kann in diesem Fall über Tricks versuchen dem Browser ein statisches Bild vorzugaukeln. Das ist allerdings etwas komplizierter. Ich würde vorher gerne mehr über die Seite wissen, bevor ich den Beitrag noch länger werden lasse.

Ich hoffe, dass ich erstmal ein wenig Licht ins Dunkel bringen konnte.