4 Location Based Services
4.5 Categorizing Location Based Services
4.5.3 Fleet steering
En este apartado vamos a comentar cada una de las propiedades del objeto Response, y como podemos utilizar las más comunes.
El objeto Response posee las siguientes propiedades:
• Buffer: indica si los datos de la página se almacenan en un búfer. • ContentType: especifica el tipo de contenido HTTP de la respuesta.
• Expires: especifica el intervalo de tiempo que debe transcurrir para que caduque una página almacenada en la caché del navegador.
• ExpiresAbsolute: tiene el mismo sentido que la propiedad anterior, pero aquí se especificar la hora y la fecha en la que caducará la página en la caché del navegador.
• Status: valor de la línea de estado que devuelve el servidor.
• CacheControl: determinará si los servidores proxy van a almacenar o no en su caché la salida generada por una página ASP.
• CharSet: indicará el juego de caracteres que está utilizando la página ASP.
• PICS: mediante esta propiedad indicaremos el tipo de contenido que posee nuestra página ASP.
• IsClientConnected: propiedad de sólo lectura con la que podremos averiguar si el cliente se ha desconectado del servidor.
Buffer
Si utilizamos la propiedad Buffer del objeto Response asignándole el valor True, conseguiremos que ASP procese todo el script en el servidor antes de enviar algo al usuario, por defecto esta propiedad tiene el valor True. El contenido del búfer no es enviado al navegador hasta que no se haya terminado de procesar la página o hasta que los métodos End o Flush del objeto Response no son invocados. Una vez activado el almacenamiento en búfer, es decir, la propiedad Buffer posee el valor True, y una vez que ya se ha enviado contenido al navegador del cliente, no se puede modificar su valor, tampoco se puede modificar ningún valor de las propiedades del objeto Response. Así por ejemplo el Código fuente 68 generaría un error.
<%Response.Buffer=False%> <HTML>
<HEAD>
<%Response.Expires=10%>
Código fuente 68
El error devuelto por el navegador sería similar al siguiente. objeto Response error 'ASP 0156 : 80004005' Error de encabezado
/cursoasp30/pruebas.asp, line 4
Los encabezados HTTP ya están escritos en el explorador cliente. Cualquier cambio en el encabezado HTTP se debe hacer antes de escribir
el contenido de la página.
En las versiones anteriores de ASP la propiedad Buffer tenía por defecto la propiedad False, de esta forma según se iba procesando la página ASP se enviaba el resultado de la ejecución al cliente. Según
Microsoft con este cambio se obtiene un mejor rendimiento en la ejecución de páginas ASP. En realidad lo que se tiene también es un mayor control sobre la salida que va a recibir el usuario.
El uso de este búfer puede ser útil en el caso de que sea necesario procesar el contenido de una página ASP antes de enviar ningún contenido previo al navegador del cliente. De esta forma se puede redireccionar al navegador hacia otra página con el método Redirect del objeto Response, este método se comentará en su apartado correspondiente, pero se puede adelantar que una llamada a este método producirá un error en el caso de que se haya enviado anteriormente algún contenido al usuario.
La propiedad Buffer también puede ser utilizada para verificar errores antes de enviar información al navegador, de esta forma si se detecta un error se puede detener el proceso de la página y redireccionar al navegador del cliente hacia una página determinada.
Cuando la propiedad Buffer, tiene su valor por defecto, es decir, el valor True se pueden utilizar una serie de métodos del objeto Response, estos métodos, cuya función se verá en el apartado correspondiente, son: Clear, End y Flush y básicamente lo que permiten es controlar el resultado o salida que se le envía al cliente.
ContentType
La propiedad ContentType sirve para definir el tipo de contenido que tiene la página, y tiene la siguiente sintaxis:
Response.ContentType=TipoContenido
Donde TipoContenido es una cadena que describe el tipo de contenido y que normalmente tiene el formato tipo/subtipo, donde tipo es la categoría general del contenido y subtipo es el tipo de contenido específico. Si no se especifica el valor de la propiedad ContentType, su valor por defecto es "text/html", es decir código HTML. Estos encabezados son utilizados por el servidor para indicar al cliente que tipo de información le envía, esta información se denomina tipos MIME.
Los valores más comunes de estos tipos y subtipos son los mostrados en la Tabla 10.
Tipo/subtipo Descripción
text/html Código HTML. Especifica que el navegador del cliente debería interpretar el código HTML a mostrar
text/plain Indica un texto ASCII. Especifica que el navegador debería únicamente mostrar texto sin interpretar código.
image/gif Un fichero gráfico GIF. El navegador debería mostrar la imagen o iniciar una aplicación que pueda visualizar la imagen.
image/jpeg Un fichero gráfico JPEG.
text/xml Código XML. Especifica que el navegador cliente debería interprestar el código XML.
El valor de esta propiedad la podemos cambiar, por ejemplo, para que en lugar de que el navegador interprete el código HTML, lo muestre tal como es, esto lo conseguimos con el Código fuente 69.
<% Response.ContentType = "text/plain" %> Código fuente 69
Expires
Mediante Expires podemos indicar en minutos el tiempo que debe pasar para que una página caduque en la caché del navegador, su sintaxis es:
Response.Expires=minutos
Si se quiere que la página caduque inmediatamente se deberá asignar el valor 0 a esta propiedad, aunque la práctica demuestra que es más efectivo asignarle un valor negativo alto como puede ser - 1000.
Con la propiedad ExpiresAbsolute indicamos en que fecha y a que hora caducará la página en la caché del navegador.
Por ejemplo si queremos que una página caduque el día 1 de Mayo de 2000 a las cuatro de la tarde, escribiremos el Código fuente 70.
<% Response.ExpiresAbsolute=#May 1,2000 16:00# %>
Código fuente 70
Status
Esta propiedad indica un código de estado del protocolo de transferencia de hipertexto HTTP.
Los valores de la propiedad Status se definen en la especificación del protocolo HTTP y su sintaxis es la siguiente:
Response.Status=DescripcionEstado
Donde DescripcionEstado es una cadena formada por un número de tres dígitos, que es el código de estado, y una pequeña descripción del estado, por ejemplo el Código fuente 71.
<%Response.Status="401 Unauthorized"%>
Código fuente 71
Código Descripción
200 La petición se realizó con éxito y la información fue enviada. Este código se envía cada vez que una página se carga con éxito. 301 El contenido pedido ha sido movido permanentemente a otra
localización.
302 La página solicitada se ha trasladado temporalmente a otra localización.
404 La información solicitada no ha podido ser localizada en el servidor.
500 En el servidor se produjo un error interno y la petición no pudo ser servida.
Tabla 11
CacheControl
A través de la propiedad CacheControl podremos determinar si los servidores proxy van a almacenar en su caché la salida generada por una página ASP o no. Esta propiedad tiene dos valores posibles: Private y Public. Si queremos que la salida de la página ASP permanezca en la caché de un servidor proxy asignaremos a esta propiedad el valor Public, pero si por el contrario no deseamos que la salida de la página ASP permanezca en la caché del servidor proxy, asignaremos a la propiedad CacheControl el valor Private. Su sintaxis es la siguiente:
Response.CacheControl = "Public" / "Private"
CharSet
Mediante la propiedad CharSet podremos indicar al navegador cliente el juego de caracteres que utilizará la página ASP. Gracias a esta propiedad podremos solventar problemas entre los diferentes idiomas, en el caso de que el navegador desconozca el juego de caracteres que debe utilizar para mostrar la página. Su sintaxis es:
Response.CharSet = JuegodeCaracteres
Así por ejemplo, si en una página .asp incluimos la sentencia que muestra el Código fuente 72, el encabezado de tipo de contenido correspondiente sería el Código fuente 73.
Se debe señalar que si en una misma página ASP incluimos varias sentencias Response.CharSet, con cada sentencia se reemplazará el juego de caracteres anterior. Por lo que el juego de caracteres quedará establecido al valor especificado por la última sentencia Response.CharSet de la página.
<% Response.CharSet = "ISO-LATIN-7" %>
content-type: text/html; charset=ISO-LATIN-7
Código fuente 73
PICS
Mediante la propiedad PICS indicaremos el tipo de contenido que posee nuestra página ASP. PICS (Platform of Internet Cotent Selection) es una especificación definida por la entidad RSACI (Recreational Software Advisory Council on the Internet (http://www.rsac.org) . Esta entidad clasifica los contenidos en Internet atendiendo a la violencia, sexo y lenguaje de las páginas. Lo cual es de utilidad a la hora de limitar el acceso a ciertos contenidos a los que no deberían tener acceso los menores.
A esta propiedad se le asigna una cadena de caracteres que debe cumplir con el formato especificado por las etiquetas PICS. Su sintaxis es:
Response.PICS(EtiquetaPICS)
Si incluimos en una página ASP la sentencia que muestra el Código fuente 74.
<% Response.PICS("(PICS-1.1 http://www.rsac.org/ratingv01.html labels on " & chr(34) &_
"1997.01.05T08:15-0500 " & chr(34) & " until " & char(34) & " 1999.12.31T23:59-0000 " &_
chr(34) & "ratings (v 0 s 0 l 0 n 0))") %>
Código fuente 74
Se agregará el encabezado http que muestra el Código fuente 75.
PICS-label: (PICS-1.1 http://www.rsac.org/ratingv01.html labels on
"1997.01.05T08:15-0500" until "1999.12.31T23:59-0000" ratings (v 0 s 0 l 0 n 0))
Código fuente 75
Nota: como las etiquetas PICS contienen comillas, se reemplaza cada comilla con " & chr(34) &")
Si en una misma página ASP incluimos varias sentencias Response.PICS, con cada sentencia se reemplazará la etiqueta PICS anterior. Por lo que la etiqueta PICS quedará establecida al valor especificado por la última sentencia Response.PICS de la página.
IsClientConnected
A través de la propiedad IsClientConnected podremos averiguar si el cliente se ha desconectado del servidor desde la última petición realizada. Esta Esta propiedad es de sólo lectura.
La propiedad IsClienteConnected devolverá un valor booleano a través del cual podremos controlar si el cliente se ha desconectado y por lo tanto no será necesario seguir procesando la página ASP y enviando información al cliente, esto es bastante interesante de cara a la mejora del rendimiento de nuestro sitio Web, ya que nos permite cancelar peticiones que ya no son esperadas por el cliente. La sintaxis es la siguiente:
Response.IsClientConnected ( )
Un ejemplo genérico de la utilización de esta propiedad es el que muestra el Código fuente 76.
<%If Not Response.IsClientConnected Then
'Código a ejecutar en el caso de que el cliente no esté conectado 'Esto supone detener la ejecución de la página ASP
End If
'Se sigue procesando la página ASP%>
Código fuente 76
En ASP 2.0 podíamos consultar esta propiedad sólo si antes habíamos enviado ya alguna salida o contenido al cliente, ahora con ASP 3.0 podemos utilizar IsClientConnected antes de enviar cualquier contenido al navegador.