Apa praktik terbaik untuk melakukan caching hasil pencarian paginasi yang pemesanan / propertinya dapat diubah?
Katakanlah, dalam aplikasi saya, seseorang ingin melihat 20 utas diskusi terakhir (dari 10.000). Permintaan akan dikirim ke database, melalui servlet
, untuk mengambil 20 catatan pertama dari tabel utas diskusi sebagai XML / JSON. Jika kemudian mereka ingin melihat 20 berikutnya, mereka pergi ke halaman hasil berikutnya dan ini memicu permintaan lain untuk mendapatkan lot berikutnya (batas dan offset = 20, dll.).
Untuk mengurangi beban server dan menunggu klien, saya ingin membuat cache halaman hasil sebelumnya. Namun, saya punya dua pertanyaan:
- Tabel hasil yang ditunjukkan dapat dipesan oleh lebih dari satu atribut (yaitu, tanggal pembuatan utas, penulis utas, terakhir-pasca-tanggal). Ini berarti bahwa pernyataan seperti '20 hasil pertama' tidak masuk akal tanpa konteks (yaitu, dengan apa kita memesan). Bagaimana front-end berkomunikasi dengan back-end apa yang sudah dimuat? Pikiran pertama saya adalah menggunakan ID untuk setiap hasil tetapi mengirimkan ini kembali ke server pada permintaan berikutnya (dan memfilter hasil berdasarkan pada mereka) akan sama menyita waktu dengan mengirim semuanya kembali secara membabi buta. Bagaimana saya bisa melakukan ini?
- Bagaimana jika suatu atribut dari hasil yang sebelumnya dikembalikan (yaitu, paling baru-baru-pasca-tanggal) telah berubah? Kami kemudian perlu cara memeriksa setiap hasil untuk melihat apakah sudah dimodifikasi di sisi server sejak di-paging. Bagaimana saya bisa melakukan ini?