Hallo Michael,
keine Ahnung, ob das sinnvoll ist, aber ich würde Folgendes probieren (im Detail sicher nicht trivial):
* Bei jedem paginierten Model-Zugriff cached Du für alle geladenen Objekte die Seite, auf der sie erscheinen (schön transparent in einer paginierten find-Methode verpackt) * Wenn Du jetzt die Paginierungs-Seite zu einem Objekt wissen willst, schaust Du im Cache nach * Wenn das Objekt (die ID) im Cache ist, überprüfst Du, ob's (noch) stimmt * Falls nicht, gehst Du Seitenweise nach vorne und hinten (dabei werden weitere Objekte im Cache aktualisiert) * Wenn das Objekt nicht im Cache ist, suchst Du es, wie in den anderen Mails schon beschrieben (auch dabei werden weitere Objekte im Cache aktualisiert)
Auf diese Weise suchst Du nur so viel, wie nötig und der Such-Aufwand wird auf mehrere Anfragen verteilt. Und je mehr Aufrufe Du hast, desto genauer ist Dein Cache. Und der Cache ist klein (nur ID-Seiten- Zuordnungen). Im Zweifel kannst Du im Hintergrund auf einer anderen Maschine den Cache dauernd erneuern.
Sicher recht aufwändig… naja… klingt aber nach einem interessanten Problem… bin gespannt, wie Du's letzten Endes löst… :D
Grüsse, Niko.
_______________________________________________ rubyonrails-ug mailing list [email protected] http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug
