Transferencia entre archivos .ASP
Para utilizar Response.Redirect para redirigir un explorador se necesita un viaje de ida y vuelta, lo que significa que el servidor envía al explorador una respuesta HTTP en la que indica la ubicación de la nueva dirección URL. El explorador abandona automáticamente la cola de la petición del servidor y envía una nueva petición HTTP para la dirección URL.
Después, el servidor agrega esta petición a la cola de peticiones, junto con las peticiones que mientras tanto llegan desde otros clientes. En un sitio Web con mucha carga, este sistema puede desperdiciar ancho de banda y reducir el rendimiento del servidor, especialmente si se redirige el explorador a un archivo que se encuentren el mismo servidor.
Puede utilizar el método Server.Transfer para realizar la transferencia de un archivo .asp a otro que se encuentre en el mismo servidor, en lugar del método Response.Redirect. Con Server.Transfer puede transferir directamente las peticiones de archivos .asp sin necesidad de abandonar la cola de peticiones, lo que elimina viajes de ida y vuelta.
Por ejemplo, la secuencia de comandos siguiente muestra cómo podría utilizar Server.Transfer para saltar entre las páginas de una aplicación según la información de estado:
< % If Session( "blnSaleCompleted" ) Then Server.Transfer( "/Pedido/Gracias.asp" ) Else Server.Transfer( "/Pedido/MasInfo.asp" ) End if %>
Server.Transfer envía peticiones desde un archivo .asp en ejecución a otro archivo. Durante la transferencia, el archivo .asp que se pidió inicialmente finaliza inmediatamente la ejecución sin vaciar el búfer de salir (para obtener más información, consulte la sección Almacenamiento en búfer del contenido). La petición de información se pone a disposición del archivo de destino cuando éste comienza la ejecución. Durante la ejecución, el archivo tiene acceso al mismo conjunto de objetos intrínsecos (Request, Response, Server, Session y Application) que el archivo que se pidió inicialmente.
También se puede utilizar Server.Transfer para realizar una transferencia entre archivos .asp que se encuentren en diferentes aplicaciones. Sin embargo, al hacerlo el archivo se comportará como si formara parte de la aplicación que inició la transferencia (es decir, el archivo sólo tendrá acceso a las variables con alcance en la aplicación inicial, no en la aplicación en la que realmente reside el archivo).
Por ejemplo, si realiza una transferencia desde un archivo que se encuentra en la aplicación Ventas a otro que se encuentra en Personal, la aplicación Ventas tomará prestado el archivo de la aplicación
Personal y lo ejecutará como si fuera parte de ella. ASP proporciona también el comando Server.Execute que permite transferir un archivo, ejecutar el contenido y volver al archivo que inició la transferencia. Si tiene conocimientos de VBScript, le ayudará pensar en Server.Execute como análogo a una llamada a un procedimiento, con la diferencia de que en lugar de ejecutar un procedimiento se ejecuta un archivo .asp completo.
Por ejemplo, la secuencia de comandos siguiente muestra cómo podría utilizar Server.Execute para incluir archivos .asp de forma dinámica:
< % . . If blnUseDHTML Then Server.Execute( "DHTML.asp" ) Else Server.Execute( "HTML.asp" ) End If . . %>
Mientras el archivo de destino pertenezca a una aplicación del mismo servidor, la aplicación inicial se transferirá a este archivo, ejecutará su contenido y continuará con la ejecución del archivo que inició la transferencia. Igual que sucede con Server.Transfer, al ejecutar un archivo .asp éste se comporta como si formara parte de la aplicación inicial. Sin embargo, Server.Execute, no funciona cuando los servidores son distintos. Para obtener más información, consulte Server.Execute.
Fuente: Manual de ASP de Valeria Socolovsky