Contexto
Trabajando como desarrollador independiente, a menudo creé sitios web completamente basados en XSLT. En otras palabras, en cada solicitud, se genera un archivo XML que contiene todo lo que necesitamos saber sobre el contenido de la página: el nombre del usuario actualmente conectado, las entradas del menú superior, si este menú es dinámico / configurable, el texto para mostrar en un área específica de la página, etc. Luego lo procesa XSL (cachés, etc.) a la página HTML / XHTML para enviar al navegador.
Tiene un buen punto para facilitar la creación de sitios web a pequeña escala, especialmente con PHP. Es una especie de motor de plantillas, pero que prefiero a otros motores de plantillas porque es mucho más potente que la mayoría de los motores de plantillas, y porque lo conozco mejor y me gusta. También es posible, cuando sea necesario, dar acceso a datos XML sin procesar a pedido para un acceso automatizado, sin la necesidad de crear API separadas.
Por supuesto, fallará por completo en cualquier sitio web de mediana o gran escala, ya que, incluso con buenas técnicas de almacenamiento en caché, XSL todavía degrada el rendimiento general del sitio web y requiere más CPU en el lado del servidor.
Pregunta
Los navegadores modernos tienen la capacidad de tomar un archivo XML y transformarlo con un archivo XSL asociado declarado como XML <?xml-stylesheet href="demo.xslt" type="text/xsl"?>. Firefox 3 puede hacerlo. Internet Explorer 8 también puede hacerlo.
Significa que es posible migrar el procesamiento XSL del servidor al lado del cliente para el 50% de los usuarios (de acuerdo con las estadísticas del navegador en varios sitios web en los que podría querer implementar esto). Significa que el 50% de los usuarios recibirán solo el archivo XML en cada solicitud, reduciendo así el ancho de banda de ellos y del servidor (el archivo XML es mucho más corto que su análogo HTML procesado) y el uso de la CPU del servidor.
¿Cuáles son los inconvenientes de esta técnica?
Pensé en varios, pero no se aplica en esta situación:
- Implementación difícil y la necesidad de elegir, en función de la solicitud del navegador, cuándo enviar XML sin formato y cuándo transformarlo a HTML. Obviamente, el sistema no será mucho más difícil que el actual. El único cambio a realizar es agregar un enlace de archivo XSL a cada XML y agregar una verificación del navegador.
- Más IO y uso de ancho de banda, ya que el archivo XSLT será descargado por los navegadores, en lugar de ser almacenado en caché por el servidor. No creo que sea un problema, ya que el archivo XSLT será almacenado en caché por los navegadores (como las imágenes o CSS, o los archivos JavaScript están almacenados en caché).
- Posiblemente algunos problemas en el lado del cliente, como quizás problemas al guardar una página en algunos navegadores.
- Dificultad para depurar código: es imposible obtener una fuente HTML que el navegador esté utilizando, ya que la única fuente que se muestra es el XML descargado. Por otro lado, rara vez busco código HTML en el lado del cliente y, en la mayoría de los casos, no se puede usar directamente (se elimina el espacio en blanco).
ngx_http_xslt_moduleo los cuatro). Dudo mucho que el soporte del lado del cliente de XSLT 2.0 sea mejor.