Qual è la migliore pratica per la memorizzazione nella cache dei risultati di ricerca impaginati i cui ordini / proprietà possono essere modificati?
Supponiamo che nella mia domanda qualcuno voglia 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 fa scattare un'altra richiesta per ottenere il lotto successivo (limite e offset = 20, ecc.).
Al fine di 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-creazione-thread, autore-thread, last-post-date). Ciò significa che un'affermazione come "primi 20 risultati" non ha senso senza contesto (cioè, da cosa stiamo ordinando). 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 rispedirli al server su richieste successive (e filtrare i risultati in base a essi) richiederebbe tanto tempo quanto restituire alla cieca tutto. Come posso fare questo?
- Cosa succede se un attributo di un risultato restituito in precedenza (ovvero la data più recente post-data) è cambiato? Abbiamo quindi bisogno di un modo per controllare ogni risultato per vedere se è stato modificato sul lato server da quando è stato effettuato il paging. Come posso farlo?