Яка найкраща практика кешування сторінок результатів пошуку, впорядкування / властивості яких можна змінити?
Скажіть, у моїй заяві хтось хоче побачити останні 20 тем для обговорення (із 10000). Запит буде надіслано до бази даних через servlet
, щоб отримати перші 20 записів із таблиці дискусійних потоків як XML / JSON. Якщо вони хочуть побачити наступні 20, вони переходять на наступну сторінку результатів, і це запускає ще один запит на отримання наступного лоту (ліміт і зміщення = 20 і т.д.).
Щоб зменшити завантаження сервера та очікування клієнта, я хотів би кешувати попередні сторінки результатів. Однак у мене є два питання:
- Таблиця, в якій відображені результати, може бути впорядкована за більш ніж одним атрибутом (наприклад, дата створення потоку, автор потоку, дата останнього після публікації). Це означає, що твердження типу "перші 20 результатів" не має сенсу без контексту (тобто, що ми замовляємо). Яким чином передня частина повідомляє бек-енду те, що вже завантажено? Моя перша думка полягала в тому, щоб використовувати ідентифікатори для кожного результату, але надсилання їх назад на сервер за подальшими запитами (і фільтрування результатів на їх основі) буде настільки ж трудомістким, як і повернення всього назад наосліп. Як я можу це зробити?
- Що робити, якщо атрибут попередньо повернутого результату (тобто, найновіший-після-дати) змінився? Тоді нам потрібен спосіб перевірити кожен результат, щоб побачити, чи він був змінений на стороні сервера з моменту його створення. Як я можу це зробити?