¿Cuál es la mejor práctica para almacenar en caché los resultados de búsqueda paginados cuyo orden / propiedades se pueden cambiar?
Digamos, en mi solicitud, alguien quiere ver los últimos 20 hilos de discusión (de 10,000). Se enviaría una solicitud a la base de datos, a través de servlet
, para obtener los primeros 20 registros de la tabla de hilos de discusión como XML / JSON. Si luego quieren ver los próximos 20, van a la siguiente página de resultados y esto dispara otra solicitud para obtener el siguiente lote (límite y compensación = 20, etc.).
Para reducir la carga del servidor y la espera del cliente, me gustaría almacenar en caché las páginas de resultados anteriores. Sin embargo, tengo dos preguntas:
- La tabla en la que se muestran los resultados se puede ordenar por más de un atributo (es decir, fecha de creación de subprocesos, autor de subprocesos, última fecha posterior). Esto significa que una declaración como 'primeros 20 resultados' no tiene sentido sin contexto (es decir, por qué estamos ordenando). ¿Cómo comunica el front-end, entonces, al back-end lo que ya ha cargado? Lo primero que pensé fue usar ID para cada resultado, pero enviarlos de vuelta al servidor en solicitudes posteriores (y filtrar los resultados basados en ellos) sería tan lento como enviar todo a ciegas. ¿Cómo puedo hacer esto?
- ¿Qué sucede si un atributo de un resultado devuelto anteriormente (es decir, la fecha posterior más reciente) ha cambiado? Luego necesitamos una forma de verificar cada resultado para ver si se ha modificado del lado del servidor desde que se paginó. ¿Cómo puedo hacer esto?