Was ist die beste Vorgehensweise zum Zwischenspeichern von paginierten Suchergebnissen, deren Reihenfolge / Eigenschaften geändert werden können?
Angenommen, in meiner Bewerbung möchte jemand die letzten 20 Diskussionsthreads sehen (von 10.000). Eine Anforderung würde an die Datenbank gesendet servlet
, um die ersten 20 Datensätze als XML / JSON aus der Diskussionsthread-Tabelle abzurufen. Wenn sie dann die nächsten 20 sehen möchten, gehen sie zur nächsten Ergebnisseite und dies löst eine weitere Anfrage aus, um das nächste Los zu erhalten (Limit und Offset = 20 usw.).
Um die Serverlast und das Warten auf den Client zu reduzieren, möchte ich die vorherigen Ergebnisseiten zwischenspeichern. Ich habe jedoch zwei Fragen:
- Die Tabelle, in der die Ergebnisse angezeigt werden, kann nach mehr als einem Attribut sortiert werden (z. B. Erstellungsdatum des Threads, Autor des Threads, Datum des letzten Beitrags). Dies bedeutet, dass eine Aussage wie 'erste 20 Ergebnisse' ohne Kontext keinen Sinn ergibt (dh nach was bestellen wir). Wie kommuniziert das Front-End dann mit dem Back-End, was es bereits geladen hat? Mein erster Gedanke war, IDs für jedes Ergebnis zu verwenden, aber das Zurücksenden dieser IDs an den Server bei nachfolgenden Anforderungen (und das Filtern der darauf basierenden Ergebnisse) wäre genauso zeitaufwändig wie das blinde Zurücksenden aller Daten. Wie kann ich das machen?
- Was ist, wenn sich ein Attribut eines zuvor zurückgegebenen Ergebnisses (dh des letzten Nachdatums) geändert hat? Wir müssen dann jedes Ergebnis überprüfen, um festzustellen, ob es seit der Auslagerung serverseitig geändert wurde. Wie kann ich das tun?