Obsesionado con reducir el peso del proyecto XHTML en el que estoy trabajando, se me ocurrió que una solución era eliminando los (muchos) espacios en blanco y variados comentarios que cuidadosamente dejé para mantener mi código estético y comprensible al momento de tener que revisarlo y editarlo nuevamente.
Por un momento o dos, estuve a punto de hacerlo manualmente pero afortunadamente la luz llego a mi, encontré que es posible hacerlo, utilizando PHP.
Así fue como llegué al Blog de David Walsh, en el que explica cómo es posible comprimir el tamaño de una página XHTML gracias al uso de búferes de salida, código que por cierto, tiene desperfectos, como bien señalaron en uno de sus comentarios. Es cuestión de que lo pruebes y mires desangrarse tu trabajo.
Por ello ajusté un poco el código antes citado, dando el siguiente resultado. La explicación está comentada:
Código :
<?php /* Primero habilitamos el uso de búferes de salida, los cuales almacenaran toda la Salida en un búfer interno */ ob_start('compress_page'); ?> <!-- Es aquí donde va tu XHTML fuente --> <?php /* Una vez que el búfer almaceno nuestro contenido, utilizamos "ob_end_flush" para usarlo y deshabilitar el búfer */ ob_end_flush(); /* Este es el SNC de este código, el cual se encarga de eliminar todos los espacios en blanco entre los Tags */ function compress_page($buffer) { $search = array('/\>[^\S ]+/s','/[^\S ]+\</s','/(\s)+/s'); $replace = array('>','<','\\1'); return preg_replace($search, $replace, $buffer); } ?>Puedes ver un ejemplo de su uso observando el código fuente en mi pagina, y que, como verás, es un resultado similar al que emplea Google en sus apps.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por japangaijin el 16 de Enero de 2009
a falta de realizar pruebas más exhaustivas, creo que puedo decir que funciona y vale la pena.
Por The Fricky! el 16 de Enero de 2009
Por JHMorales el 16 de Enero de 2009
Bien, remuevo la citada línea y aplico tu código. Yslow reporta la página como no gzipped y en ver código aparece ahora todo en una sola línea. Pero no ha borrado todos los espacios, ya que deja un espacio entre tags y dentro de los mismos tags deja espacios antes de /> que tampoco los elimina.
Así que por el momento me quedo con mi línea de código, que a propósito funciona aunque no se ponga el <?php ob_end_flush(); ?> al final.
El código lo hago en Aptana studio o en Notepad++ en formato UTF-8 sin BOM.
<a href="http://www.jhmorales.es">JHMorales</a>
Por leoncitoamx el 16 de Enero de 2009
( http://1blogdeblogs.com/2007/08/reducir-el-tiempo-de-respuesta-de-una-pagina-web-con-flush.html )
para ir dando salida a los componentes de mi página conforme están listos (al usuario le da la sensación de rapidez) y reservo las compresiones a los estilos y scrpits
Por gcm el 16 de Enero de 2009
Muy buen tip, lo tomare en cuenta en mi próximo proyecto.
Por Dano el 16 de Enero de 2009
Por Eliseo el 16 de Enero de 2009
Pensemos luego en un modem de 56 Kbytes y veamos la diferencia en tiempo. Sólo así podremos sacar una conclusión real de si es bueno o no el sistema para un caso concreto (es que me temo que, realísticamente, la diferencia no va a ser demasiado acusada)
Por vanvanero el 16 de Enero de 2009
Existen bastantes tips que nos ayudan a optimizar nuestros tiempos de respuesta de las aplicaciones como por ejemplo:
* Si en el front de tu aplicación se trabaja con JavaScript se puede realizar ofuscamiento como lo expresa el capitulo http://www.librosweb.es/ajax/capitulo11/ofuscar_el_codigo_javascript.html de el sitio librosweb.es
* Siguiendo las recomendaciones como las "mejores practicas para el desarrollo de un sitio web" del sitio de desarrollo de yahoo http://developer.yahoo.com/performance/rules.html
* Seguimiento a través del diagnostico que se realiza con el plugin para mozilla firefox YSlow.
Por Otaku RzO el 17 de Enero de 2009
Sí a esto le agregamos GZIP quedaría genial.
@JHMorales: ob_end_flush(); sé usa cuando haces más de una llamada a ob_start(); , así se libera el buffer y le dice al servidor que ya puede mostrar lo procesado mientras sigue cargan el resto faltante.
Por Inyaka el 31 de Marzo de 2009
Por jpcw el 31 de Marzo de 2009
Agregando a libreria de scripts......