Serie de conferencias ASP (12) Envío de contenido al navegador
Autor:Eve Cole
Fecha de actualización:2009-05-30 19:59:00
Al procesar secuencias de comandos ASP, cualquier texto o gráfico que no esté contenido dentro de los delimitadores ASP o etiquetas <SCRIPT> simplemente se devolverá al navegador. El contenido se puede enviar al navegador explícitamente utilizando el objeto Respuesta.
Envío de contenido Para enviar contenido al navegador desde un delimitador o procedimiento ASP, puede utilizar el método Write del objeto Response. Por ejemplo, la siguiente declaración puede enviar un saludo diferente dependiendo de si el usuario ha visitado esta página:
<%
Si Primera Vez = Verdadero Entonces
Response.Write "<H3 ALIGN=CENTER>Bienvenido a la página de descripción general</H3>"
Demás
Response.Write "<H3 ALIGN=CENTER>Bienvenido de nuevo a la página de descripción general</H3>"
Terminar si
%>
Fuera del procedimiento, no es necesario utilizar Response.Write para enviar contenido al usuario. El contenido que no está dentro de un delimitador de script se envía directamente al navegador, que lo formatea y lo muestra. Por ejemplo, el siguiente proceso de script tiene el mismo resultado que el script anterior:
<H3 ALINEAR=CENTRO>
<% Si es la primera vez, entonces %>
Bienvenido a la página de descripción general.
<%Más%>
Bienvenido de nuevo a la página de descripción general.
<% Finalizar si %>
</H3>
Utilice comandos de secuencia de comandos mixtos y HTML cuando necesite devolver el resultado solo una vez o cuando sea conveniente agregar declaraciones al texto HTML existente. Utilice Response.Write cuando no desee separar una declaración con delimitadores o cuando desee crear una cadena que se devuelva al navegador. Por ejemplo, puede construir una cadena de texto para crear una fila de tabla utilizando los valores devueltos por una tabla HTML:
Respuesta.Escribir "<TR><TD>" & Request.Form("Nombre") _
& "</TD><TD>" & Request.Form("Apellido") & "</TD></TR>"
Configuración del tipo de contenido Cuando el servidor web devuelve el archivo al navegador, también le indica al navegador el tipo de contenido contenido en el archivo. Esto permite al navegador decidir si puede mostrar el archivo por sí mismo o debe llamar a otra aplicación. Por ejemplo, si el servidor de red devuelve una tabla de Microsoft Excel, el navegador debe llamar a una copia de Microsoft Excel para mostrar la página. Los servidores web identifican tipos de archivos asignando la extensión del archivo a una tabla de tipos MIME.
Puede utilizar la propiedad ContentType del objeto Response para establecer la cadena de tipo de contenido HTTP para el contenido enviado al usuario. Por ejemplo, el siguiente comando establece el tipo de contenido para una definición de canal:
<% Response.ContentType = "aplicación/x-cdf" %>
Para obtener más información sobre los canales, consulte "Creación de canales dinámicos" en este tema.
Otros tipos de contenido comunes son texto/sin formato (para contenido devuelto como texto en lugar de declaraciones HTML interpretadas), texto/gif (para imágenes GIF) y video/quicktime (para películas en formato Apple QuickTime®). Se ha definido un conjunto estándar de tipos MIME que es compatible con un servidor web o un navegador web. Para ver qué tipos de contenido admite su servidor web de Microsoft, use el Administrador de servicios de Internet para abrir la página de propiedades de su sitio web, haga clic en la pestaña Encabezados HTTP y luego haga clic en la pestaña Tipos de archivo.
Redirigir el navegador Utilice el método Redirect para redirigir el navegador a otra URL en lugar de enviar el contenido al usuario. Por ejemplo, si desea confirmar que los usuarios ingresaron a su aplicación desde la página de inicio para que puedan recibir una identificación de cliente, puede verificar si tienen un número de identificación de cliente; de lo contrario, puede redirigirlos a la página de inicio;
<%
Si Sesión ("ID de cliente") = 0 Entonces
Respuesta.Redireccionamiento "página de inicio.asp"
Terminar si
%>
A menos que el búfer ya esté abierto, debe redirigir el navegador antes de que se devuelva cualquier contenido o encabezado al navegador. Colocar la declaración Response.Redirect en la parte superior de la página y antes de la etiqueta <HTML> garantiza que no se devuelva ningún contenido al navegador. Si utiliza Response.Redirect después de devolver contenido o encabezados al navegador, verá un mensaje de error.
Si está utilizando Response.Redirect en el medio de la página, úselo con la propiedad Response.Buffer, como se explica en la siguiente sección.
Contenido almacenado en búfer De forma predeterminada, el servidor web devuelve resultados de procesamiento de secuencias de comandos y HTML al procesar páginas ASP. Sin embargo, puede configurar la propiedad Buffer del objeto Response para procesar todos los comandos de script del servidor en la página antes de enviar algo al usuario.
Puede utilizar técnicas de almacenamiento en búfer para determinar un punto en el proceso de procesamiento de la página en el que no desea enviar contenido antes de ese punto al usuario. También puede usar el método Redirect del objeto Response para redirigir al usuario a otra página, o usar el método Clear del objeto Response para borrar el búfer y enviar contenido diferente al usuario. El siguiente ejemplo utiliza ambos métodos.
<%
'Active el almacenamiento en búfer. Esta declaración debe aparecer antes de la etiqueta <HTML>.
Respuesta.Buffer = Verdadero %>
<html>
<cuerpo>
.
.
.
<%
Si Solicitud ("FName") = "" Entonces
Respuesta.Borrar
Respuesta.Redirect "/samples/test.html"
Demás
Respuesta. Solicitud de escritura ("FName")
Terminar si
%>
</cuerpo>
</html>
También puede utilizar Response.Buffer para evitar que el servidor web devuelva los encabezados HTTP antes de que el script los modifique. Algunas propiedades y métodos, como Response.Expires y Response.Redirect, modifican los encabezados HTTP.
Cuando la propiedad Buffer está configurada en un script y no se llama al método Flush, el servidor mantendrá las solicitudes Keep-Alive emitidas por el usuario. Desarrollar este hábito de secuencias de comandos puede ayudar a mejorar el rendimiento del servidor porque el servidor no tiene que crear una nueva conexión para cada solicitud de usuario (suponiendo que el servidor, el usuario y cualquier servidor proxy admitan los requisitos de Keep-Alive). Sin embargo, una posible desventaja de este enfoque es que el búfer no muestra ninguna respuesta al usuario hasta que haya procesado todos los scripts en el archivo ASP actual. Para secuencias de comandos más largas y complejas, los usuarios pueden verse obligados a esperar mucho tiempo antes de ver esta página.
De forma predeterminada, el almacenamiento en búfer está desactivado para las aplicaciones ASP. Puede utilizar el Administrador de servicios de Internet para activar los buffers para toda la aplicación ASP.
Permite que los servidores proxy almacenen páginas en caché A través del servidor proxy, las aplicaciones pueden enviar páginas a los usuarios. Un servidor proxy solicita páginas web desde un sitio web en nombre del navegador del usuario. Los servidores proxy almacenan en caché las páginas HTML para que las solicitudes repetidas de la misma página puedan devolverse al navegador de forma rápida y eficiente. Los servidores proxy realizan solicitudes y almacenan en caché las páginas web, y alivian la carga en la red y los servidores web.
Aunque el almacenamiento en caché funciona bien para páginas HTML, no funciona bien para páginas ASP que contienen información generada dinámicamente. Por ejemplo, los informes sobre las condiciones del mercado de valores o las listas de inventarios que muestran grandes volúmenes de negocios requieren información inmediata. La información de hace una hora es muy inexacta en este momento. Si la aplicación devuelve información personal, por ejemplo, una página de inicio personalizada, se espera que el usuario no pueda ver la información personal de otro usuario.
De forma predeterminada, el servidor ASP Command Proxy no puede almacenar en caché las páginas ASP (aunque almacena en caché imágenes, mapas de bits, pequeñas aplicaciones y otras referencias en páginas almacenadas en caché). Puede utilizar la propiedad Response.CacheControl para configurar el campo de encabezado HTTP de control de caché para permitir el almacenamiento en caché de una página determinada. El valor predeterminado de Response.CacheControl es la cadena "Privado", que evita que los servidores proxy almacenen en caché esta página. Para permitir el almacenamiento en caché, establezca el campo del encabezado de control de caché en Público:
<% Response.CacheControl = "Público" %>
Debido a que los encabezados HTTP deben enviarse al navegador o al servidor proxy antes de enviar cualquier contenido de la página, puede configurar la propiedad Response.CacheControl o usar Response.Buffer para almacenar en caché la página antes de cualquier etiqueta HTML.
El campo de encabezado Control de caché es parte de la especificación HTTP 1.1. Las páginas ASP no se pueden almacenar en caché en servidores proxy que solo admiten HTTP 1.0 porque no se envían campos de encabezado caducados.
Evite que los navegadores almacenen páginas en caché. Cada versión del navegador tiene sus propias especificaciones sobre si almacenar páginas en caché. Para evitar que el navegador almacene en caché páginas ASP, utilice Response.Expires para configurar el encabezado de caducidad:
<% Respuesta.Expira = 0 %>
Un valor de 0 fuerza la caducidad de las páginas almacenadas en caché. Debido a que los encabezados HTTP deben enviarse al navegador antes de enviar cualquier página, la página se puede almacenar en caché colocando el atributo Response.Expires antes de la etiqueta HTML o usando Response.Buffer.
Crear canales dinámicos
Internet Explorer 4.0 tiene una nueva característica que los planificadores web pueden utilizar para combinar páginas web con temas comunes en un canal. En el navegador, el canal se muestra en la barra de título del canal; los usuarios acceden al canal haciendo clic en el icono. Los canales se actualizan automáticamente en segundo plano; los usuarios no tienen que visitar el sitio para descargar las páginas más recientes en su navegador. Los canales brindan a los usuarios una ruta rápida y directa para explorar un conjunto de páginas web relacionadas, y estas páginas web se actualizan automáticamente.
Con ASP, puede escribir scripts para recopilar las preferencias del usuario y luego crear canales dinámicamente. Un archivo de definición de canal (.cdf) establece la organización y secuencia del contenido del canal. Los comandos en archivos .cdf usan la misma sintaxis que el marcado HTML, lo que los hace más fáciles de entender y generar a partir de scripts. Al escribir un script ASP para crear un archivo de definición de canal, el script utiliza una extensión .cdx. Cuando ASP lee un archivo con una extensión .cdx, el tipo de contenido aplicación/x-cdf se envía automáticamente, lo que le indica al navegador que use la definición del canal para interpretar los bytes. Si no utiliza .cdx como extensión, el script debe configurar manualmente el tipo de contenido en application/x-cdf usando Response.ContentType.
A continuación se muestra un ejemplo de cómo utilizar los canales. El siguiente formulario HTML le pide al usuario que seleccione un canal. Cuando se envía, el formulario llama a un script en el archivo .cdx para crear la definición del canal.
<P>Elige los canales que desees </P>.
<FORM METHOD="POST" ACTION="chan.cdx">
<P><TIPO DE ENTRADA=NOMBRE DE LA CASILLA=Películas> Películas
<P><INPUT TYPE=CHECKBOX NAME=Deportes> Deportes
<P><TIPO DE ENTRADA="ENVIAR" VALOR="ENVIAR">
</FORM>
El script en Chan.cdx crea una definición de canal basada en los valores de la tabla enviada con la solicitud.
<% Si Request.Form("Películas") <> "" Entonces %>
<CANAL>
declaraciones de definición de canal para las páginas de películas
</CANAL>
<% Finalizar si %>
<% If Request.Form("Deportes") <> "" Entonces %>
<CANAL>
declaraciones de definición de canal para las páginas de deportes
</CANAL>
<% Finalizar si %>
Envío de archivos a un servidor Un navegador puede utilizar la aplicación Posting Acceptor para enviar archivos a un servidor web. Cuando Posting Acceptor carga archivos, envía campos de formulario codificados en URL que enumeran el nombre y la ubicación de cada archivo recibido. La URL de procesamiento postal se puede agregar a una secuencia de comandos que carga el archivo para llamar a la secuencia de comandos ASP para procesar estos nombres de campos. Por ejemplo, puede escribir un script que envíe automáticamente un correo electrónico al administrador del sistema con el nombre y la ubicación del archivo.