Regístrate!
GONZO Mia Intimidades Chat Ocio Hosting Tarot Alarmas Hoteles Poesías

Archivo de December, 2007

Optimizar es un arte, Parte II: pre-Gzip estático, evitando compresión on-the-flight

Segunda parte de una serie de artículos divulgativos sobre una de mis aficiones de mi trabajo, optimizar la carga web.

Parte II: Gzip estático

El único problema que tiene la compresión con Gzip (explicado en la Parte I) es que sacrifica consumo de CPU a cambio de obtener archivos 4 o 9 veces mas pequeños. En mi opinion realmente ahorra CPU, sin embargo existe esa delgada linea de rendimiento.

La solución que he desarrollado soluciona por completo este problema.

Ventajas:

  1. Elimina la necesidad de comprimir Gzip on-the-flight (en cada petición). Solo se hará una sola vez, cuando se genere una caché del archivo.
  2. Ahorra de 4 a 9 veces espacio en disco, ya que reduce el tamaño de los archivos. Para una caché es magnifico, como explicaré en el ejemplo práctico.
  3. Permite activar el nivel más potente de compresión (9) sin ningún miedo a colapso, ahorrando un poco más de espacio en disco, CPU por transferir más rápido y tiempo de carga.
  4. Además conserva todas las ventajas del Gzip (explicadas extensamente en la Parte I)

En qué consiste:

Consiste en guardar una copia pre-comprimida del archivo a transferir. El concepto es sencillo, evita la necesidad de comprimirlo al vuelo (on-the-flight) cada vez que se pide ese archivo de texto plano como ocurriría con Gzip normal.

Esto alivia radicalmente el consumo de CPU conservando, incluso aumentando la ventaja de comprimir a más nivel.

Ejemplo práctico:

La herramienta más usada de Blogs Teoriza es el Caché Web. Para el que no lo conozca es una sencilla aplicación web que genera una copia en texto plano de una pagina web dada.

Ahora funciona con este nuevo método. Con ello doy un paso de gigante en cuanto a rendimiento, uno más ya que conseguí desarrollarlo sin uso de MySQL y con apenas 10 lineas para presentar cada caché. Sin embargo permanecia la poca ventaja del gasto de CPU al comprimir las paginas.

Ahora las comprime una sola vez, cuando genera cada caché. Sirviendolas sin apenas procesar. Ligerísimo.

Antes aseguraba que aguantaba cualquier avalancha de visitas extremas… ahora ya doy por sentado que jamás conseguirán colapsarlo.

Ejemplo del resultado:

Donde aplicarlo:

Recomiendo usar esta metodología para los siguientes casos:

  • Cachés de cualquier tipo. (especialmente útil al ahorrar también tremendo espacio en disco)
  • CSS y javascript: en la mayoría de los casos estos archivos son totalmente estáticos y rara vez son modificados. Por lo tanto son candidatos perfectos a ser pre-gzipeados y ahorrar así enormes gastos de CPU.
  • Cualquier archivo en general que cumpla estas tres condiciones:
    • Texto plano. (html, css, javascript…)
    • Contenido estático (cuando no tiene variables, cuidado con formularios).
    • Pocas modificaciones.

Cómo aplicarlo:

La clave del asunto es la función gzencode($datos, 9) para PHP.

Usándola de la siguiente manera se crea una copia de un archivo con terminación .gz y comprimido con Gzip al máximo en el disco duro del servidor.

<?php
if ($_GET[”archivo”]) {
$file = $_GET[”archivo”];
$data = implode(”", file($file));
$gzdata = gzencode($data, 9);
$fp = fopen($file . “.gz”, “w”);
fwrite($fp, $gzdata);
fclose($fp);
}
?>

[Aviso: este código es una herramienta sencillísima de ejemplo para generar archivos pre-gzipeados.]

Pegando este código en un archivo PHP, por ejemplo gziper.php y dando los permisos de escritura (777) correspondientes vía FTP podrémos crear versiones Gzipeadas de cualquier archivo que se encuentre en ese directorio ejecutandolo de la siguiente forma:

http://www.tuweb!.es/gziper.php?archivo=style.css

Con esto obtendremos la creación de un nuevo archivo style.css.gz pre-comprimido con Gzip.

Una vez creado el archivo, recomiendo enmascararlo con .htaccess. También se puede mejorar un poco la cosa, detectando si el navegador acepta Gzip para descomprimir el archivo en su defecto.

Otro punto a tener en cuenta es que hay que modificar la cabecera del archivo. Se resuelve desde .htaccess o fácilmente añadiendo esta linea PHP al principio del código:

header(”Content-Encoding: gzip”);

@include(”style.css.gz”);

Y eso es todo para una interesante Parte II, espero que sirva a la comunidad.

Comentar Autor: GONZO Comentarios: 0 Fecha: 23 December 2007
Categorías: Internet, Descubrimientos, Conocimientos, Recomendaciones

Optimizar es un arte, Parte I: compresión Gzip, incluyendo CSS y javascript

Este es el primer artículo de una serie de métodos que he conseguido implementar con éxito ahorrando CPU y transferencia, haciendo que mis servicios web soporten más lectores online, sirviendo más rápido y con menos hardware.

Parte I: Compresión Gzip

Este método ya es bastante familiar, casi todo el mundo que lo necesita realmente lo utiliza, pero no lo aprovecha al máximo.

La compresión Gzip hace que el servidor comprime los archivos de texto antes de transferirlos, reduciendo su tamaño entre 5 y 9 veces el original. Como por arte de magia consigue que la información que envía el servidor hacia el cliente sea notablemente menor.

Por ejemplo, un archivo que pesa 68 Kb gzipeado se queda en 9 Kb ahorrando mas de 7 veces el tamaño

Conseguimos de un plumazo tres enormes ventajas:

  1. Mayor capacidad de carga: ahorrando tiempo en transferir archivos se minimiza la carga de CPU y RAM del servidor.
  2. Mejor velocidad de carga: al transferir menos información las paginas cargarán bastante más rápido, la experiencia de tus usuarios será mejor y evade la necesidad de que el server esté en el país objetivo.
  3. Considerable ahorro de dinero: el gasto elemental de un servidor web es la transferencia mensual, esta se mide en Gb/mes. Comprimiendo con Gzip el ahorro será tremendo.

[Curiosidad: existe una supuesta delgada linea de eficiencia, algunos dicen que activando Gzip on-the-flight se gasta más CPU que en modo normal. Por mi experiencia pienso que se ahorra CPU, sin embargo en la Parte II explicaré un método muy interesante para hace Gzip estáticamente (mas magia)]

Puede parecer trivial, ya que mucha gente lo conoce y lo aplica. Sin embargo mi truco “avanzado” es que recomiendo activar Gzip en TODOS los archivos planos y no solo a las páginas HTML como veo en la mayoría de webs. Cualquier archivo plano se debe gzipear, me refiero especialmente a archivos html, estilos css y archivos javascript. El ahorro triple será más significativo aún.

Distintos métodos para implementar Gzip:

  • Con Wordpress: es fácil, Opciones > Lectura > Marcar opción Gzip (abajo). Sin embargo el error común es olvidarse aquí del tema, un error porque con esta opción solo consigues comprimir las páginas html olvidandote del archivo css y posibles javascripts.
  • Con PHP: para comprimir una página html donde puedes ejecutar PHP has de añadir estas lineas de código al principio de cualquier proceso:

    <?php ob_start(”ob_gzhandler”); ?>

    Al final de cualquier código:

    <?php ob_end_flush(); ?>

  • Para CSS y javascript (recomendado)
    En .htaccess

    AddHandler application/x-httpd-php .css .js
    php_value auto_prepend_file /home/… RUTA LOCAL …/public_html/gzip-start.php
    php_value auto_append_file /home/… RUTA LOCAL …/public_html/gzip-end.php

    En gzip-start.php

    <?php ob_start(”ob_gzhandler”); ?>

    En gzip-end.php

    <?php ob_end_flush(); ?>

  • Combinando htaccess + PHP: poner en .htaccess:

    php_flag zlib.output_compression on
    #Con el numero se controla el nivel de compresion donde 0 es null y 9 el maximo
    php_value zlib.output_compression_level 5
    AddHandler application/x-httpd-php .css .js
    #Poner una ruta local cualquiera hacia un archivo php
    php_value auto_prepend_file /home/…/public_html/gzip-head.php

    Crear el archivo gzip-head.php con el siguiente contenido:

    <?php
    $pathinfo = pathinfo($PHP_SELF);
    $extension = $pathinfo[”extension”];
    if ($extension == “css”) {header(”Content-type: text/css”);}
    if ($extension == “js”) {header(”Content-type: text/javascript”);}
    ?>

Y esto es todo…

En la Parte II explico un interesantísimo metodo para comprimir con Gzip estáticamente, en vez de on-the-flight gastando 0 CPU en comprimir cada pagina, completando el circulo de eficiencia perfecta.

Comentar Autor: GONZO Comentarios: 2 Fecha: 23 December 2007
Categorías: Internet, Descubrimientos, Conocimientos, Recomendaciones

Moneda antigua sin clasificar: moneda de 3 falus, de Bronce, año 1871 DC, Marruecos

Mi tío me enseñó un día esta moneda antigua que conservaba desde hacía mucho tiempo. Me dijo que posiblemente tiene un gran valor por su antigüedad y rareza.

Moneda antigua (sin clasificar)
(Pulsa en la foto para ampliar a máxima resolución)

Aquí comienza la búsqueda y captura. Es un reto por simple curiosidad, me gustaría averiguar de que año es, qué es realmente, que indican sus signos y cuanto valor tiene.[Actualización: gracias a mi colega posavasos (experto en buscar) que encontró en ebay más monedas similares y la correspondiente información que complemento a continuación. También gracias a Edu por la traducción.]

Info:

  • Es una moneda de Marruecos llamada falus (también felus), corresponde al valor de 3 falus (identificado porque tiene orlas a rayas y es de mayor tamaño que la de 2 falus).
  • El número inscrito en el anverso indica el año en árabe (1288 A.H.) que corresponde al año 1871 D.C. de nuestra era.
  • Es de bronce.
  • Acuñada por Mohamed IV (1859-1873, sultán de Marruecos, dinastía Alauita).
  • Una Estrella de David en el reverso.
  • Es bastante común en España y Andorra (dicho por varios expertos en foros y concuerda con la cantidad de monedas en eBay).
  • Su estado de conservación es muy bueno en comparación con las demás monedas idénticas que he encontrado.
  • Se venden en eBay más monedas muy similares cuyo valor parece ser pequeño :(
  • Ejemplar idéntico vendido en eBay, aunque en peor estado.
  • Más info y más info.

¿Alguien me puede ayudar por favor? (moneda perfectamente identificada en menos de 4 horas, gracias a todos vosotros)

Comentar Autor: GONZO Comentarios: 1 Fecha: 4 December 2007
Categorías: Descubrimientos, Retos, Interesante

Tráfico de Blogs Teoriza, Noviembre 2007

Gráfico de visitas únicas (amarillo) y páginas vistas (naranja) de los últimos meses:

trafico blogs teoriza red de blogs

En Noviembre las métricas de Blogs Teoriza han crecido un 5%. Alcanzamos las 992.593 visitas y las 2.042.584 páginas vistas.

Crecemos con 2 nuevos blogs (Salud y Música) totalizando 29 blogs. Mantenemos 7 herramientas para la blogosfera resaltando en especial el éxito del Web Caché.

Sobre nuestro crecimiento en visitas, francamente estamos creciendo contra el viento ya que se están juntando, una detrás de otra, diversas dificultades inesperadas. Sobre todo diversos filtros en Google que sin ninguna razón aparente merma una parte importante de nuestro crecimiento. Cuando esto se resuelva (tarde o temprano) daremos un salto de crecimiento que nos corresponde.

La gran novedad de este mes, a parte de dos nuevos blogs, es la implementación de un sistema unificado en toda la red de valoración. Esto significa que cualquier usuario (sin registro) puede valorar nuestros post con unas estrellitas de 1 a 5. Esta maquinaria ya está en funcionamiento y se puede comprobar en el TOP50 de posts mejor valorados. Con el tiempo este ranking será más fiable y pronto será categorizado por canales temáticos.

Animamos a todos nuestros seguidores a que valoren cuantos más post quieran, según su criterio!

Comentar Autor: GONZO Comentarios: 1 Fecha: 1 December 2007
Categorías: Blogs Teoriza