Performace Antwortzeiten
Paul Brunner
- php
Hallo,
ich habe einen seltsamen Effekt bei einer CSS-HTML-Layout-Vorlage. Eine Testseite als reine HTML-Datei (html:9k, css:12k, grafik:5k) läd mit guten Antwortzeiten.
Die selbe Vorlage als php-Variante (eingelagerte PI, Variabendefinitionen (zwei heredocs), includes, echos) braucht überproprotional lange zu laden (10-15 sek, DSL). Ein kleiner Benchmarktest zeigt, daß es nicht am Script selbst liegt - das ist nach 0.25ms abgearbeitet.
Der Server ist ein Apache 1.2, PHP4.3.3. Irgendwelche Ideen?
Gruß
Paul
Hallo,
manchmal frage ich mich wirklich was da wohl tief in den Eingeweiden eines Servers vorgehen mag und ob das noch irgend jemand versteht.
Ich habe das Problem ein wenig eingegrenzt: Die Verzögerung entsteht scheinbar beim Zugriff auf Grafiken, die via css (background-image) eingebunden werden.
So geht es einwandfrei:
@import url("style/layout.css");
So kommte es zu Verzögerungen:
<?php define("path_style", "style/"); ?>
@import url("<?php echo path_style; ?>layout.css");
Meinem zugegebenermaßen begrenzten Verständnis der Abläufen zwischen Server und Client nach müsste das ganze doch so ablaufen. Client fordert php-Datei an, Server php-parst und sende Dateen als text/html, Client schaut in html-Code und fordert css-Dateien an, Server sendet css-Dateien, Client rendert css-Dateien und fordert zugehörige Grafiken an. Wie können sich PHP-Parser und Grafik-Request da ins gehege kommen?
Verwirrt
Paul
hi,
Wie können sich PHP-Parser und Grafik-Request da ins gehege kommen?
eigentlich gar nicht.
es ist, wie du schon sagtest: der php-parser setzt die html-datei zusammen, und liefert sie an den client aus.
dieser entnimmt aus dem html-code, dass er eine css-ressource vom server anzufordern hat, und macht dies.
der server liefert die css-ressource zurück, woraufhin der client dann wiederum beginnt, die im css referenzierten hintergrundgrafiken anzufordern.
teste doch mal folgendes:
rufe deine php-seite mit dem browser ab, speichere dir den html-quellcode, und lade ihn als reine html-datei auf den server hoch.
dann löschst du erstmal den cache vollständig(!), und forderst danach die html-datei vom server an.
prüfe mal, ob sich dann beim anfordern der css-datei/hintergrundbilder ebenfalls ähniche verzögerungen ergeben.
gruss,
wahsaga
hi,
prüfe mal, ob sich dann beim anfordern der css-datei/hintergrundbilder ebenfalls ähniche verzögerungen ergeben.
ergänzung: kannst du dieses "phänomen" in verschiedenen browsern beobachten, oder führt sich lediglich ein bestimmer so auf?
gruss,
wahsaga
Hallo,
ergänzung: kannst du dieses "phänomen" in verschiedenen browsern beobachten, oder führt sich lediglich ein bestimmer so auf?
Der Effekt tritt unabhaengig vom Browser auf. Seltsamer weise haengt er nur bei 1-2 von insgesamt 15 Grafiken, die alle auf die selbe Weise und aus dem selben Unterverzeichnis eingebunden werden. Der Haenger dauert immer etwa 10sek (was auf einen Timeout hindeutet).
Das ganze ist unabhaenig davon ob ich "echo" oder "print", Konstanten oder Variablen, "@import" oder "<link...>" verwende und der gelieferte html-Code sieht zumindest von aussen gleich aus.
Das mit dem speichern und gegentesten werde ich mal versuchen.
Gruss
Paul