Какова лучшая практика для кэширования постраничных результатов поиска, чей порядок / свойства могут быть изменены?
Скажем, в моем приложении кто-то хочет посмотреть последние 20 обсуждений (из 10000). Через базу данных будет отправлен запрос servlet
на выбор первых 20 записей из таблицы потоков обсуждений в формате XML / JSON. Если они затем хотят увидеть следующие 20, они переходят на следующую страницу результатов, и это запускает другой запрос на получение следующего лота (limit и offset = 20 и т. Д.).
Чтобы уменьшить нагрузку на сервер и ожидания клиентов, я бы хотел кешировать предыдущие страницы результатов. Однако у меня есть два вопроса:
- Таблица, в которой отображаются результаты, может быть упорядочена по нескольким атрибутам (т. Е. Дата создания потока, автор темы, дата последней публикации). Это означает, что утверждение типа «первые 20 результатов» не имеет смысла без контекста (то есть, по чему мы упорядочиваем). Как тогда интерфейс взаимодействует с тем, что он уже загрузил? Моей первой мыслью было использовать идентификаторы для каждого результата, но отправка их обратно на сервер при последующих запросах (и фильтрация результатов на их основе) будет так же трудоемкой, как отправка всех обратно вслепую. Как я могу это сделать?
- Что если атрибут ранее возвращенного результата (т. Е. Самая последняя дата публикации) изменился? Затем нам нужен способ проверки каждого результата, чтобы увидеть, был ли он изменен на стороне сервера с момента его подкачки. Как я могу это сделать?