Edge Side Includes ( ESI ) es un pequeño lenguaje de marcado para el ensamblaje de contenido web dinámico a nivel de borde . El propósito de ESI es abordar el problema de la escalabilidad de la infraestructura web. [ 1 ] Es una aplicación de la computación de borde .
Es bastante común que los sitios web generen contenido. Esto puede deberse a la actualización de contenido, como catálogos o foros, o a la personalización . Esto supone un problema para los sistemas de almacenamiento en caché . Para solucionar este problema, un grupo de empresas ( Akamai , Art Technology Group , BEA Systems , Circadence Corporation, Digital Island, Inc. , Interwoven, Inc. , Open Market, cuya tecnología relacionada con ESI ahora pertenece a FatWire Software , Oracle Corporation y Vignette Corporation ) desarrollaron la especificación ESI y la presentaron al W3C para su aprobación. El editor de la propuesta fue Mark Nottingham.
La especificación del lenguaje ESI 1.0 se presentó al Consorcio World Wide Web (W3C) para su aprobación en agosto de 2001. El W3C acusó recibo, pero no aceptó la propuesta. [ 1 ]
ESI es implementado por algunas redes de distribución de contenido , como Akamai, y por algunos servidores proxy de caché como Varnish , Squid y Mongrel ESI, [ 2 ] aunque muchos no implementan la especificación completa. [ 3 ] Akamai también agrega características adicionales a la versión que admite. [ 4 ]
Sintaxis
Las etiquetas de elementos ESI se insertan en HTML u otro contenido basado en texto durante su creación. En lugar de mostrarse a los usuarios, estas etiquetas ESI son directivas que instruyen a un procesador ESI a realizar alguna acción. Las etiquetas ESI basadas en XML indican al agente de procesamiento del lado del cliente la acción que debe realizarse para completar el ensamblaje de la página. Un ejemplo sencillo de un elemento ESI es la etiqueta include, que se utiliza para incluir contenido externo a la página. Una etiqueta include ESI colocada en línea dentro de un documento HTML se vería así: [ 1 ]
<esi:include src= "http://example.com/1.html" alt= "http://bak.example.com/2.html" onerror= "continue" />En este caso, el procesador ESI recuperaría la URL de origen (src), o en su defecto, la URL alternativa (alt), o si esta última falla, no haría nada. El sistema ESI suele ser un servidor proxy de caché, por lo que puede tener una copia local de estos archivos que puede insertar sin necesidad de volver al servidor. Alternativamente, se puede almacenar en caché toda la página con las etiquetas ESI, y solo se pueden realizar las solicitudes ESI al servidor de origen. Esto permite diferentes tiempos de almacenamiento en caché para distintas partes de la página o diferentes grados de personalización.
Características
Hay cuatro características principales en ESI: [ 1 ]
- inclusión de fragmentos de página, como se ilustra arriba;
- variables que se pueden establecer a partir de cookies o encabezados HTTP y luego usarse en otras declaraciones ESI o escribirse en el marcado;
- condiciones para que se pueda utilizar un marcado diferente en función de variables, por ejemplo, si se establece o no una cookie;
- gestión de errores , de modo que se pueda utilizar una conmutación por error si un servidor de origen no está disponible.
Alternativas
Las principales alternativas a ESI son:
- para realizar el ensamblaje en el servidor de origen utilizando Server Side Includes y muchos tipos de scripts del lado del servidor .
- utilizar secuencias de comandos y técnicas del lado del cliente conocidas colectivamente como Ajax (ver: Página web dinámica ) en el navegador
- establecer un protocolo entre el origen y el borde de tal manera que el contenido recurrente se incluya en el borde automáticamente, como con el protocolo Railgun de Cloudflare [ 5 ].
- para realizar el ensamblaje en el navegador utilizando componentes web .
Referencias
- 1 2 3 4 Mark Tsimelzon; Bill Weihl; Joseph Chung; Dan Frantz; John Brasso; Chris Newton; Mark Hale; Larry Jacobs; Conleth O'Connell (04-08-2001). "Especificación del lenguaje ESI 1.0" . W3C . Recuperado el 10-11-2008 .
- ↑ "Mestizo ESI" .
- ↑ "Características de barniz ESI" . Consultado el 7 de abril de 2011 .
- ↑ "Extensiones de EdgeSuite 5.0 ESI a la especificación ESI 1.0" (PDF) . Consultado el 7 de abril de 2011 .
- ↑ "Railgun™" . Junio de 2023.
Enlaces externos
- Recursos para desarrolladores ESI de Akamai
- Nota del W3C "Especificación del lenguaje ESI 1.0"