2011-02-04 116 views
5

Hola Uno de los consejos en "consejos de rendimiento del sitio web" en varios blogs dice "Evitar redirecciones". En mi caso, estoy usando Response.Redirect para la misma página. Estoy pasando una cadena de consulta y mostrando la información adecuada para el usuario.¿Cuál es la alternativa a Response.Redirect() asp.net?

Response.Redirect("FinalPage.aspx?NextID=" + ID); 

Así que en nuestra lógica de negocio, estoy recargando la misma página con información diferente.

Entonces, ¿cómo puedo evitar la redirección? ¿Hay otra alternativa? Por cierto, mi objetivo es obtener algún rendimiento allí.

Respuesta

6

Redirigir es la R en el patrón PRG, que es un patrón aceptado para procesar las solicitudes publicadas. Entonces definitivamente no es malvado.

Sin embargo, solía ser una pregunta de la entrevista común: "¿Cuál es la diferencia entre Server.Redirect() y Server.Transfer() y cuál debe ser utilizado" . La gente solía decir Transfer porque no implicaba un viaje de ida y vuelta, pero la web ha cambiado mucho desde entonces. En esos días no se podía volver a utilizar la lógica común en las vistas a menos que se use Transferir o redirigir, pero hoy en día especialmente con ASP NET MVC hay muchísimas maneras de hacerlo.

En su caso, estoy a favor de PRG y creo que redirigir es semánticamente más correcto. También evita que el formulario vuelva a enviarse si el usuario hace clic en F5 o se actualiza.

0

También puede hacer un Server.Transfer, que no requiere una nueva solicitud para entrar, lo que disminuye la carga en el servidor. Más información que compara los dos es here.

En su caso, desea hacer una redirección porque está modificando la cadena de consulta y cambiando algo en la página, en lugar de cambiar el procesamiento de la solicitud inicial a otra página.

3

La recomendación es redireccionamientos innecesarios.

Su caso es diferente: está pasando información a la página, esto no es estrictamente lo mismo que una redirección normal (es decir, una página que se movió).

0

El principal "mal" si se pudiera llamar así es que los redireccionamientos requieren un viaje redondo adicional; el cliente solicita una página (generalmente la misma página, especificando que se hizo clic en un botón en particular), y el servidor responde diciendo "solicite esta página", y el navegador entonces lo cumple, lo que hace que el servidor realmente sirva la siguiente página.

A veces es necesario hacerlo, sin embargo, ahora hay maneras mucho mejores de controlar la navegación en un sitio web. Por ejemplo, en lugar de un botón de "formulario" que causa una devolución de datos y redirigir, puede usar un LinkButton que se comportará como un hipervínculo, permitiendo que el navegador solicite la nueva página directamente. También podría usar un MultiView que muestre diferentes ASCX y controlar la navegación volteando la vista (sin embargo, comprenda que esto puede tener sus propias implicaciones de rendimiento, especialmente cuando los usa de forma anidada).

0

Creo que si se quiere volver a dirigir a misma página a continuación, en lugar de hacer Response.Redirect("FinalPage.aspx?NextID=" + ID); podría utilizar NextID en ViewState también o Hidden Field por lo que no sería necesario para redirigir SAME page y luego verifique que hidden field o viewstate en vez de comprobar QueryString

: D

Cuestiones relacionadas