Samplx, the ASP eXtensible Markup Language

Samplx, the ASP eXtensible Markup Language

Haciendo la web desde 1996, EnterpriseDreams

Reescribiendo URLs con Negociación de Contenido

La Negociación del Contenido puede hacer tus URLs más cortas y más abstractas. Cuando redirijes tus URLs sin extensiones salvas algunos bytes del ancho de banda.

¿Que es la Negociación de Contenido?

La negociación de contenido es una pequeña característica que permite en forma transparente enviar la mejor variante del recurso que se ha pedido a los navegadores cuando este lo solicita. Cuando esto ocurre el navegador le dice a el servidor que está buscando, el servidor afina, pone a punto y ejecuta la respuesta en base a la mejor opción disponible para dicha petición.

Lenguajes, tipos de archivo, conjunto de caracteres y su codificación pueden ser automáticamente enviados a diferentes navegadores basados en las preferencias que se envían en las cabeceras.
Se pueden transformar las siguientes dimensiones cuando ocurre la llamada Negociación de Contenido:

  •  Tipo de archivo (tipos MIME)
  •  Lenguaje
  •  Conjunto de caracteres (Content encoding)
  •  Codificación de los caracteres (Charset)

Con todo esto es posible indicarle al servidor las posibles transformaciones para que este responda a las peticiones realizadas por el navegador sin perder la identidad o la información que debe devolver.

Acerca del rendimiento del servidor o conflictos en IIS

La negociación del contenido no afectará en lo más mínimo al servidor ni a los usuarios, además el sitio Web sufrirá un dramático impacto al estar todo su contenido almacenado en su propia cache interna, salvando de ésta forma el ancho de banda de forma drástica.

  •  Samplx evita el peligro de cargar demasiado el servidor por el uso del método Server.Transfer para crear las páginas del sitio, o la imposibilidad de comunicar variables o funciones entre includes a través del método Server.Execute (similar al anteriormente citado Server.Transfer), ya que en realidad siempre se carga el mismo objeto que depende únicamente de los parámetros que se encuentren en uso y/o las peticiones realizadas a través del navegador del usuario.
  •  Samplx ayuda a evitar conflictos en los logs de IIS, y permite tener un sitio Web totalmente amigable a los buscadores (SEO friendly), ayudando al webmaster a indexar las páginas del sitio Web que antes no habían sido indexadas por usar parámetros dinámicos.
  •  Samplx ayuda al webmaster aplicando algo de compresión al código ASP/VbScript, HTML, CCS y JS, eliminando bytes e incluso Kbytes innecesarios en cada petición para salvar el ancho de banda.

Reescribiendo URLs con Samplx

Reescribir URLs con Samplx es muy fácil, solo debemos colocar todas nuestras rutinas en un archivo XML para que éste funcione, cada objeto del archivo XML contiene diferentes argumentos que explicaremos a continuación:

  1. rewrite (requerido)
    •  Indica cual es la ruta de la petición que se debe ejecutar
  2. src (requerido)
    •  Indica dónde se encuentra el contenido de la petición enviada, estas deben estar siempre en la carpeta "/bin/src" para tu código fuente (ASP/VbScript,HTML,CSS,JS), o en la carpeta "/bin/media" si son documentos binarios (imagenes, documentos Word, Excel, pdf, etc)
  3. type (requerido)
    •  Indica el tipo de contenido que se mostrará en el navegador (posibles valores htm, css, js, xml, media)
  4. runat (opcional)
    •  Si el valor del argumento "type" es uno de los siguientes: (htm,css,js,xml), indica que el contenido (ASP/VbScript) que se incluya debe ejecutarse en el servidor, si el argumento no se encuentra la respuesta será siempre estática, es decir no se ejecutará ningún código (ASP/VbScript) en el servidor.
  5. cache (opcional)
    •  Indica que todo el contenido redirigido debe almacenarse en la cache interna, cuando utilizamos éste argumento debemos tener en cuenta que el mismo debe tener dos valores en el mismo separados por coma (intervalo,número), y que ambos son requeridos, el siguiente ejemplo nos indica que queremos que la página será almacenada en cache y que la misma se refrescará automáticamente cada 12 horas:
      cache="h,12"
  6. El argumento número es eso mismo, un número, el argumento intervalo puede tener los siguientes valores:

    Valor Descripción
    yyyy Año
    q Trimestre
    m Mes
    y Día del año
    d Día
    w Día de la semana
    ww Semana del año
    h Hora
    n Minuto
    s Segundo
  7. include (opcional)
    •  Indica que los archivos deben incluirse automáticamente al ser llamada la página, ejemplos:

    Incluimos un archivo local y otro remoto:
    include="myFile.htm|http://my.remote.file/myFile.asp,params,GET

    Incluimos un archivo remoto y un Mods:
    include="http://my.remote.file/myFile.asp,params,GET|mods:/demo/demo.xml,object,name:demo"

    Incluimos un archivo local y un Mods:
    include="myFile.htm|mods:/demo/demo.xml,object,name:demo"

    Cómo vemos podemos incluir más de un sólo archivo al mismo tiempo así cómo además vemos cómo se harán globales únicamente para la página que se mostrará en pantalla.

  8. compress (opcional)
    •  Asignadole el valor no, indica que el contenido no debe comprimirse, útil sobre todo para los que escriben código JavaScript sin terminar con punto y coma ";" cuando se trata de separar instrucciones (o sea si lo hacen, pero es a través de saltos de línea).

Ejemplo del archivo "rewrite.xml"

<?xml version="1.0" encoding="iso-8859-1"?> 
<object>
<object rewrite="/" src="/default.asp" type="htm" runat="server" cache="n,10"
include="publicidad.asp|http://remote.web.com/functions,user=xx&pwd=xx,POST"/>
<object rewrite="/productos" src="/productos.asp" type="htm" runat="server" cache="d,1"
include="mods:shopping/center.xml,shop,show:main"/>,
<object rewrite="/images" src="/" type="media" cache="d,3"/>
<object rewrite="/css" src="/css.asp" type="css" runat="server" cache="h,24"/>
<object rewrite="/js" src="/js.asp" type="js" runat="server" cache="h,12" compress="no"/>
</object>

Ejemplo del archivo personalizado "custom.xml"

<?xml version="1.0" encoding="iso-8859-1"?> 
<custom>
<custom rewrite="/" src="/default.asp" type="htm" runat="server" cache="n,10"
include="publicidad.asp|http://remote.web.com/functions,user=xx&pwd=xx,POST"/>
<custom rewrite="/productos" src="/productos.asp" type="htm" runat="server" cache="d,1"
include="mods:shopping/center.xml,shop,show:main"/>,
<custom rewrite="/images" src="/" type="media" cache="d,3"/>
<custom rewrite="/css" src="/css.asp" type="css" runat="server" cache="h,24"/>
<custom rewrite="/js" src="/js.asp" type="js" runat="server" cache="h,12" compress="no"/>
</custom>

En los ejemplos anteriores vemos cómo nos ha quedado la arquitectura de nuestro sitio Web:

  • Una página principal a través del atributo "rewrite", que nos indica que ejecutemos el código de la página que se incluya en el atributo "src" "default.asp" (dentro del directorio "/bin/src")
  • La misma a través del atributo "include", embebe un archivo del propio sitio Web (publicidad.asp), así cómo un segundo archivo (http://remote.web.com/functions,user=xx&pwd=xx,POST) que en este caso puede ser alguna librería genérica que tenemos almacenada en un servidor remoto y cuyo contenido ejecutaremos en nuestro sitio (ya que es de nuestra propiedad, lo tenemos protegido por un formulario con un nombre de usuario y una contraseña para que sólo nosotros tengamos acceso a ella).
  • El atributo "cache", que nos indica que nuestro contenido quedará almacenado en la cache del servidor durante unos 10 minutos, se vaciará automáticamente y nuevamente volverá a almacenarse durante el mismo tiempo (y así sucesivamente).
  • El atributo "type" que crea automáticamente las cabeceras que se enviarán al navegador informando de su contenido  ("htm").
  • Y finalmente el último atributo "runat", que permite ejecutar él código fuente (ASP/VbScript) embebido para dicha redirección, incluida la página o documento que se encuentre en el atributo "src".
  • Una segunda página ("/productos") con los productos de nuestro sitio Web, que también contiene un archivo incluido (en este caso un Mods) a través del atributo "include", y con una cache declarada a través del atributo "cache", que se actualizará automáticamente 1 vez al día.
  • Una carpeta de documentos protegidos (imágenes, documentos de texto, archivos de video, etc), que estarán vigentes en cache durante tres días.
  • Un archivo dinámico para nuestras Hojas de Estilo (CSS), almacenadas en cache durante 24 horas.
  • Y un archivo dinámico para nuestros JavaScripts, que se almacenarán en cache durante 12 horas, pero que además no queremos comprimir ya que estamos utilizando el atributo "compress="no"", porque tenemos la manía de separar instrucciones con saltos de línea, en lugar de separarlas con punto y coma (que además queda mucho más claro).

En definitiva vemos que lo que ha variado en uno y otro archivo, sólo ha sido el nombre del árbol de objetos del mismo ("object") en el ejemplo original, ("custom") en nuestro archivo modificado.

 

 

Nunca ejecutes código externo que no sea de tu propiedad, de esa forma estarás entregando la llave de tu servidor a un tercero que podría atacarte robando toda tu información, llegando incluso a borrar todos los archivos de tu sitio Web y ocasionándote un daño irreparable!

 

 


Samplx, the ASP eXtensible Markup Language

Creative Commons License
Samplx se encuentra protegido bajo una licencia de Creative Commons.

© 1996-2007 Powered by EnterpriseDreams Solutions

Samplx Content generated in 0.2675781 seconds