Pergunta

Sinta-se livre para editar o título, se você sabe como formular a pergunta melhor.(Tagging é um problema bem.) O problema pode ser muito difícil, em geral, a forma e, assim, vamos considerar um exemplo concreto.

Você obtém uma tela cheia de stackoverflow perguntas solicitando /questions ?sort=newest página.Página seguinte link leva a /questions?page=2 &sort=newest.Eu suponho que no lado do servidor, o pedido é traduzido para uma consulta SQL com a cláusula LIMIT.Problema com esta abordagem é que, se nova pergunta foram adicionados enquanto o usuário navega na primeira página, a sua segunda página começa com algumas perguntas que ele já viu.(Se ele tem 10 perguntas por página, e 10 novas perguntas aconteceu a ser adicionado, ele vai ter exatamente o mesmo conteúdo do segundo tempo!)

Existe uma forma elegante de resolver este problema comum?Eu percebo que ele não é um grande problema, pelo menos não para o stackoverflow, mas ainda.

A melhor idéia que eu tenho (além de armazenar histórico do pedido por cliente) é usar /questions?answer_id=NNN formato.O servidor retorna uma página que começa com o pedido de resposta, e coloca o id da primeira resposta na próxima página em página seguinte link.Deve haver uma maneira de escrever SQL para isso, certo?

É como é geralmente feito?Ou há um caminho melhor?

Foi útil?

Solução

Isso não pode ser feito de uma maneira fácil.Por exemplo, o "sem Resposta" lista aqui no stackoverflow é classificada pelo número de votos.Então, se você gostaria de salvar o último ID da página que você está visualizando (em um cookie, a pedido, na sessão, onde quer), e alguém upvotes um post enquanto você está navegando na página 2, página 3 não está completo, pois recentemente votos positivos post poderia ter sido movido para a página 1 ou 2.

Única maneira de fazer isso é carregar a lista completa em alguém sessão.Por favor, não...

Como já mencionado, vamos esperar que as pessoas estão acostumadas a isso.

Outras dicas

A maioria dos sites que eu vi não resolver este problema - você mostra uma página, incluindo algum conteúdo que você já viu.

Você pode considerar que um recurso - quando você clicar em "next" e ver algum conteúdo que você está visto antes, é um sinal de que pretende voltar para a frente de novo, porque há alguns novos conteúdos.

Etiqueta de cada questão com o seu tempo inseridos no banco de dados, executar o momento em que o frontpage última foi carregado como um cookie ou parte do URL, e limitar a pesquisa para os itens n através de n+displaynum como você ir para a frente.

Mas eu não me incomoda.Esse comportamento é uniforme o suficiente para que a maioria dos usuários esperam de ti, e serve como um sinalizador para quando novos dados está se tornando disponível.Você pode até mesmo abrir uma nova aba/janela que começa no topo da lista para ver o que chegou.

Eu acredito que o SQL (MySQL) seria:

SELECT * 
FROM   entries 
WHERE  entry_id >= @last_viewed_entry_id 
ORDER BY entry_id 
LIMIT 50
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top