Pergunta

Eu tenho um usuário sobre o que vamos chamar PageA.aspx. Este usuário precisa para chegar ao PageB.aspx. A maneira óbvia é ter uma hiperligação que simplesmente envia-los para PageB.aspx. Isso me fez pensar sobre as outras maneiras de obter entre as páginas. Pode-se usar javascript para fazer um salto do lado do cliente. Há também o redirecionamento do lado do servidor aparentemente volumosos.

O que eu gostaria de saber é o que, se houver, são os hits de desempenho entre esses diferentes métodos. Vou assumir o lado do servidor é o peso um pouco mais pesado, mas por quanto? Será que esses métodos de escala de forma diferente? Existem problemas ocultos com a fazê-lo de uma maneira em relação a outro?

Obrigado!

Foi útil?

Solução

A ligação real é melhor para a maioria das circunstâncias. Todos os agentes de usuário saber o que um link é eo que ela representa. É melhor para SEO, acessibilidade e usabilidade.

Um server-side (via postback) redirecionamento é bom se você precisar, por exemplo, necessidade de rastrear detalhes sobre qual link foi clicado ... Mas é um pedido adicional para o servidor (e tempo para o usuário). Também botches SEO (et al) por isso é apenas uma opção viável dentro de um "web app" apropriado onde spidering ou acessibilidade são controlados ou desconsideradas.

JS pode dar-lhe o poder de rastreamento mas é inútil (por conta própria) em ambientes onde JS está desativado. Envio de atividade de volta para o servidor adiciona a carga de modo que é algo a considerar.

Se você precisar dele , considere usar links padrão e usando jquery para ligar os eventos de clique para acompanhar as coisas. Mas realmente ... Só se você precisar dele, uma vez que irá atrasar a experiência do usuário ligeiramente.

Em resumo:. A menos que você tenha uma boa razão para não, vara com as normas

Outras dicas

Eu acho que a questão importante é por que o movimento usuário de PageA a página B? O que eles fazem para que isso aconteça?

Foi porque eles pediram algum recurso diferente (um "get"), fizeram enviar dados para o servidor (ou seja, era parte de um "post"), faz o usuário saiba que PageA é diferente a página B (são conceitualmente o mesmo recurso, mas pontos de vista diferentes do mesmo) ou algo mais?

Outras considerações, como se Página B é acessível sem PageA (ele pode ser marcada, ele tem seu próprio URL, deveria ser visto como uma URL diferente no navegador?) Irá guiá-lo.

É difícil dar-lhe uma solução "melhor" sem entender essas coisas.

Quanto a usar Server.Transfer ou Response.Redirect, a diferença destas duas abordagens tem sido coberto aqui:

Server.Transfer Vs. Response.Redirect Response.Redirect e Server.Transfer Quando usar Server.Transfer sobre PostBackUrl?

Oh, e nenhuma delas são apropriadas para uma aplicação ASP.NET MVC onde você deve, em vez disso, ser o encaminhamento para uma ação em um controlador de vez.

http://weblogs.asp.net/mikebosch/archive/2008/02/02/asp-net-mvc-tip-2-redirecting-to-another -action-and-passando-information-to-it.aspx Redirect à ação em outro controlador

A minha abordagem geral é que qualquer página que exibe dados deve ser um get. Mensagens deve aceitar dados, mas não devolvê-lo, IMHO.

Portanto, eu (quase) sempre fazer um redirecionamento após um post. É um custo menor que o erro impede usuário.

Por um lado, ele impede que várias postagens dos mesmos dados -. Se recarrega usuário por qualquer motivo (ou aperta o botão de volta), eu não quero que os dados re-submetidos

A questão motor de busca é um passo importante, também. Se Página B é uma página que você deseja indexados, não será encontrado através de javascript ou de um post.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top