Jakie są najlepsze praktyki buforowania stronicowanych wyników wyszukiwania, których kolejność / właściwości można zmienić?
Powiedzmy, że w mojej aplikacji ktoś chce zobaczyć ostatnie 20 wątków dyskusji (z 10 000). Do bazy danych zostanie wysłane żądanie servlet
pobrania pierwszych 20 rekordów z tabeli wątków dyskusji jako XML / JSON. Jeśli następnie chcą zobaczyć następne 20, przechodzą do następnej strony wyników, co odpala kolejne żądanie uzyskania następnej partii (limit i offset = 20 itd.).
Aby zmniejszyć obciążenie serwera i oczekiwania klientów, chciałbym buforować poprzednie strony wyników. Mam jednak dwa pytania:
- Tabela, w której pokazane są wyniki, może być uporządkowana według więcej niż jednego atrybutu (tj. Data utworzenia wątku, autor wątku, data ostatniego postu). Oznacza to, że stwierdzenie typu „pierwsze 20 wyników” nie ma sensu bez kontekstu (tj. Przez co zamawiamy). W jaki sposób front-end komunikuje się z back-endem o tym, co już załadował? Moją pierwszą myślą było użycie identyfikatorów dla każdego wyniku, ale odesłanie ich z powrotem do serwera przy kolejnych żądaniach (i filtrowanie wyników na ich podstawie) byłoby tak samo czasochłonne jak odesłanie wszystkiego na ślepo. Jak mogę to zrobić?
- Co się stanie, jeśli zmieni się atrybut wcześniej zwróconego wyniku (tj. Najnowszej daty końcowej)? Następnie potrzebujemy sposobu sprawdzenia każdego wyniku, aby zobaczyć, czy został zmodyfikowany po stronie serwera od czasu, gdy został on umieszczony na stronie. Jak mogę to zrobić?