Qual è la procedura migliore per memorizzare nella cache i risultati di ricerca impaginati i cui ordini / proprietà possono essere modificati?
Dì, nella mia domanda, qualcuno vuole vedere gli ultimi 20 thread di discussione (su 10.000). Una richiesta verrebbe inviata al database, tramite servlet
, per recuperare i primi 20 record dalla tabella dei thread di discussione come XML / JSON. Se poi vogliono vedere i prossimi 20, passano alla pagina successiva dei risultati e questo spara un'altra richiesta per ottenere il lotto successivo (limite e offset = 20, ecc.).
Per ridurre il carico del server e l'attesa del client, vorrei memorizzare nella cache le pagine precedenti dei risultati. Tuttavia, ho due domande:
- La tabella in cui sono mostrati i risultati può essere ordinata da più di un attributo (ad esempio, data di creazione del thread, autore di thread, data di ultimo post). Ciò significa che un'affermazione come "primi 20 risultati" non ha senso senza contesto (vale a dire, cosa ordiniamo). In che modo il front-end, quindi, comunica al back-end ciò che ha già caricato? Il mio primo pensiero è stato quello di utilizzare gli ID per ogni risultato, ma inviarli di nuovo al server sulle richieste successive (e filtrare i risultati basati su di essi) richiederebbe altrettanto tempo che inviare tutto alla cieca. Come posso fare questo?
- Cosa succede se un attributo di un risultato precedentemente restituito (vale a dire, la più recente-post-data) è cambiato? Abbiamo quindi bisogno di un modo per controllare ogni risultato per vedere se è stato modificato sul lato server dal momento che è stato effettuato il paging. Come posso fare questo?