Desde el punto de vista técnico, una de las primeras decisiones que teníamos que tomar, en el arranque de soitu.es, era el servidor HTTP que usaríamos. Otro día contaremos ese proceso --por qué y cómo se decidió usar Nginx y Apache-- pero una cosa que teníamos clara era que, se decidiese lo que se decidiese, tendríamos que meterle mano al código del servidor para hacer cosas que, de antemano, sabíamos que ninguno hacía.
El primer módulo necesario era uno que nos permitiese marcar todas las páginas que sirviéramos, sin importar cómo habían sido generadas. Nginx tiene un módulo que hace algo parecido, http_sub_module, pero que no hace otras muchas cosas que también queremos y que, soportarlas, implicaría reescribir totalmente el módulo. Cosa que hemos hecho.
En concreto, los requisitos eran:
Todo esto teniendo en cuenta que todos los elementos que se sirven, HTML en general, pueden salir de un gestor de contenidos (donde se podrían llegar a hacer gran parte de esas limpiezas) o no. Es decir, parte de las páginas que se sirven, no pasan por el gestor, son generadas con DreamWeaver, el Scite o, directamente, con el vi. Por tanto, son ficheros dejados tal cual en el disco y, en el proceso de servir, no puede salir ni uno sin su procesado.
De esta forma, nació ngx_http_html_clean_filter_module.c que, mediante una máquina de estados finitos, procesa la página que se va a servir y hace las modificaciones necesarias.
Las marcas elegidas son:
<!-- =lo que sea[...]= -->
O sea, un comentario de la forma...<!-- ===== Inicio del bloque cabecera ===== -->
desaparecerá del HTML servido pero no un<!-- Inicio del bloque cabecera -->
<!-- = #IB[...] = -->
aquí escribimos
todo lo que queramos que
se respete tal cual
<!-- = #EB[...] = -->
Y ese trozo de texto saldrá tal cual.<!-- = #XP = -->
antes del tag body.Los parámetros son:
Un ejemplo de uso es:
location / {
html_clean_active on;
# Pixel de contabilizacion y JS comun.
html_clean_pxlcntrblock '<div style="display:none">\
<img src="/pxlctl.gif" width="1" height="1" alt="" />\
<script language="Javascript" type="text/javascript" src="/comun.js">\
</script></div>';
# Solo JS comun.
html_clean_xcldpxlcntrblock '<div style="display:none">\
<script language="Javascript" type="text/javascript" src="/comun.js">\
</script></div>';
}
El código del nuevo módulo se distribuye en modo de parche. Debe aplicarse al fuente 0.6.29 y añade una nueva opción (--without-http_htmlclean_module) en el proceso de configuración.
MD5SUM | 14-Jul-2008 09:38 | 150 bytes |
nginx-0.6.29-HTMLCLEAN-20080403.patch.bz2 | 28-Apr-2008 23:19 | 8422 bytes |
Si quieres firmar tus comentarios puedes iniciar sesión »
En este espacio aparecerán los comentarios a los que hagas referencia. Por ejemplo, si escribes "comentario nº 3" en la caja de la izquierda, podrás ver el contenido de ese comentario aquí. Así te aseguras de que tu referencia es la correcta. No se permite código HTML en los comentarios.
Lo sentimos, no puedes comentar esta noticia si no eres un usuario registrado y has iniciado sesión.
Si ya lo estás registrado puedes iniciar sesión ahora.