Ecco lo scenario:
-
Sto mostrando all'utente (chiamiamolo UtenteA) 10 elementi per pagina , ordinandoli per data (prima la più recente) .
-
Come utentePer visualizzare ancora la pagina 1, un altro utente (chiamiamolo UserB) pubblica un nuovo elemento.
-
Quindi, UtenteA ha deciso di fare clic sulla pagina 2. Ora UtenteA è sorpreso di vedere l'ultimo elemento che è apparso nella pagina 1 viene mostrato di nuovo come il primo elemento nella pagina 2.
Come risolvere questo problema? (Penso che ci siano diversi approcci per risolvere questo problema).
Per chiarire, questa è la mia domanda:
select * from items order by publish_date desc limit <(PAGE_NUMBER - 1) * 10>, 10
Da notare : "Lo scorrimento infinito" non è una soluzione, perché dietro le quinte lo scorrimento infinito è semplicemente l'impaginazione in cui viene richiesta automaticamente la pagina successiva.
Scenario alternativo:
-
Sto mostrando all'utente (chiamiamolo UtenteA) 10 elementi per pagina , ordinandoli per data (prima la più recente) .
-
Come utentePer visualizzare ancora la pagina 1, un altro utente (chiamiamolo UserB) elimina un elemento (supponiamo che l'elemento eliminato sia l'ultimo elemento nella pagina 1).
-
Quindi, UtenteA ha deciso di fare clic sulla pagina 2. Ora UtenteA vede 10 elementi della pagina 2, ma non sa che l'ultimo elemento della pagina 1 è diverso ora (perché è stato eliminato, quindi il primo l'elemento della pagina 2 viene visualizzato come ultimo elemento nella pagina 1). Quindi Utente manca la visualizzazione di 1 elemento.