Mailinglisten-Archive |
Hi Julian, Am Sonntag, 19. Februar 2006 14:06 schrieb Julian Schwarz: > Ich gebe auf einer Seite eine komplizierte Mysqlabfrage mit > "Blätterfunktion" aus. Die Abfrage dauert ca. 4 Sekunden. Ich würde nun > gerne den Blättervorgang auf Benutzerseite beschleunigen, damit der > Benutzer nicht so lange warten muß. Die einzige Lösung dafür ist eine Art > "Pre-Cache". Diese müsste allerdings im Hintergrund ablaufen, damit die > Ladezeit der aktuell anzuzeigenden Seite nicht um die Ladezeit der > vorzucachenden Seiten verlängert wird. > > Mein Lösungsansatz: > Der Benutzer ruft die erste Seite auf. Mittels PHP wird die Sql-Abfrage für > die nächste Seite erzeugt, in eine Datei geschrieben. Ein zweites Skript > (was irgendwie im Hintergrund läuft) wird aufgerufen. Dieses holt die > nächste Sql-Abfrage und führt diese aus. > Wenn nun der Benutzer auf die zweite Seite blättert kommt das > Abfrageergebnis sofort - dank des Mysql-Query-Cache. Gleichzeitig wird der > Precachevorgang für die nächste Seite wiederholt. > > Das Problem > ...ist die Skriptausführung im Hintergrund. Ist das möglich? Oder hat > jemand möglicherweise ein ähnliches Problem schonmal gelöst? ja, habe ich. Allerdings weiß ich nicht, inwieweit sich das für Dich und für Websites mit vielen gleichzeitigen Zugriffen eignet. auf meiner Website funktioniert es aber perfekt. Auf meiner Website habe ich eine Suche für Links und Bilder. Für die Suche habe ich eine eigene Datenbanktabelle, die dann auf der Basis der Benutzereingaben durchsucht wird. Ich hole aber aus der Datenbank nur die IDs der gefundenen Datensätze und das Eigenschaftsmerkmal Bild oder Link, um die zurückzuliefernde bzw. zurückgelieferte Datenmenge so gering wie möglich zu halten. Ich hole beim Abschicken des Suchformulars alle Treffer aus der Datenbank und lege die IDs in der Session ab. Anschließend, auch wenn auf Seite 1 des Suchergebnisses zurückgesprungen wird, navigiert der Anwender bei mir dann nur noch durch die Trefferliste in der Session. Das gilt auch, wenn er zwischenzeitlich woanders auf der Website unterwegs war, und dann in das Suchergebnis zurückkehrt, ohne eine neue Suche auszuführen. Über die IDs, die ich in der Trefferliste in der Session abgelegt habe, binde ich dann fertig generierte Dateischnipsel in die Suchergebnisseite ein. Pro Link bzw. Bild gibt es einen solchen, der über die ID im Dateinamen identifizierbar ist. Die Dateischnipsel generiere ich immer dann, wenn ich die Suche-Tabelle neu aufbaue. :-) Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive