Aufbau der Seite beschleunigen
-
Hallo. Ich bin gerade dabei eine Seite für unseren Sportverein zu schreiben. Dabei möchte ich gerne für alle Mannschaften die Wettbewerb starten auf der Startseite die aktuellen Ergebnisse ausgeben.
Ich lese dazu aus einer Datenbank die Ergebnisse URL aus. da die Mannschaften in unterschiedlichen Spielklassen unterwegs sind, sind es ca 10 verschiedene Ergebnisseiten! Und genau da liegt das Problem : Das Parsen der Ergebnisseite dauert ca 1,5 Sekunden! Und das ganz mal 10 würde ein Seitenaufbau von 10 Sekunden bedeuten.Ich lese die ganze Seite dynamisch mit PHP aus. Gibt es da eine Möglichkeit mit THreads zu arbeiten und wäre das eine OPtion?
Vielen Dank
-
Du liest gar nicht eine eigene Datenbank aus, sondern fremde Webseiten, wenn ich recht verstanden habe. Man kann Regexps ungeschickt machen. Mach davon wenige Aufrufe. Also lieber eine Regexp, die 10 Ergebnisse liefert, als pro Mannschaft eine. Sind die fremden Seiten so nett, auch mal 304 zu antworten, wenn Du so nett bist, Dir das ETag oder Datum zu merken?
Ja, Threads brächten, daß Du parallel auf die Seiten warten kannst. Dauert es wirklich 1.5s, bis die Seiten bei Dir reinkommen, oder verarbeitest Du 1.5s lang?
-
Caching ist im Web die beste Variante.
Volkards Ansatz würde ich auf jeden fall nachgehen - aber dann würde ich dennoch die Seiten cachen und nur 1mal in der Stunde oder so per cronjob die ergebnisse neu updaten.
-
Zu den beiden super Ansätzen der Vorredner möchte ich dir, weil du schon Threads angeschnitten hast, die Variante mittels AJAX vorschlagen.
http://de.wikipedia.org/wiki/Ajax_(Programmierung)
Ein Tutorial hierzu findest du unter: http://www.w3schools.com/ajax/default.ASP
Sofern du AJAX nutzt, baut sich deine Seite um die per AJAX eingebundenen Inhalte auf und sofern der Content bereitsteht, wird er auch angezeigt. Somit ist deine Seite grundsätzlich aufgebaut, wird aber nach und nach mit Inhalten befüllt.
Viel Spaß.
-
Der erste Schritt bei der Optimierung ist immer die Analyse.
Ist es wirklich das Parsen der Daten, was so lange braucht? Und was genau am Parsen? Wenn Du reguläre Ausdrücke verwendest, wie volkard vermutet, schau mal, ob sie wirklich für die Performance wesentlich sind. Reguläre Ausdrücke werden in der Regel im Arbeitsspeicher verarbeitet und Du musst schon sehr viele oder extrem komplexe Ausdrücke auswerten, bevor die Zeiten zu einer Sekunde kumulieren.
Wenn das Holen der Seiten lange dauert, wären asynchrone Requests in der Regel der bessere Weg als threads. Wobei ich keine Ahnung habe, wie das in PHP geht.