15 sept 2013

Consigue una mejor velocidad de ejecución de tu Blog optimizando sus imágenes: "Optimize images".

Page Speed controla múltiples parámetros que analizan una página web  para evaluar su rendimiento y ofrecer un conjunto de sugerencias que pueden ayudar a mejorarlo. Para ello utiliza un conjunto de reglas que estamos analizando en cada entrega de esta guía de rendimiento para Bloggers.

En esta ocasión vamos a repasar la optimización total de imágenes. Algunos Blogs, dependiendo de su temática, suelen poseer gran cantidad de imágenes. Muchas de ellas no suelen estar optimizadas porque no han sido tratadas a tal efecto cuando se copiaron de Google, se añadieron desde una cámara fotográfica o se realizaron con un editor de imágenes.


Optimizar las imágenes, en términos de rendimiento web consiste en hacer que sin perder calidad ocupen menos espacio en KB para que su descarga desde el servidor al navegador del cliente sea lo más rápida posible.

Analizaremos varias formas de optimización de imágenes, desde la creación de "css sprites" hasta la reducción de espacio sin pérdida de calidad en formatos .jpg y .png. Esta sugerencia de Page Speed supone una verdadera mejora en el rendimiento y es muy fácil de realizar, incluso sin tener gran experiencia en informática.



Sugerencias de Page Speed analizadas paso a paso hasta el momento:

Aviso para principiantes, diversidad de temáticas adaptada a niveles de conocimiento en la materia:

Todos los cambios que se van a tratar en la guía son de eminente carácter técnico. Trato de explicarlo para hacerlo asequible a un público con escasos o nulos conocimientos en informática. No obstante, hay muchas de las reglas que este servicio ofrece que están dirigidas a usuarios expertos.
En caso de que dispongas de poca experiencia o conocimientos en materia web, si lo explicado en esta guía te resulta complejo, te recomiendo que realices estas otras guías simplificadas a tal efecto:

En concreto la optimización de imágenes es un tema que puede resultar fácil (aunque tedioso si nunca se ha hecho) para muchos usuarios con o sin grandes conocimientos informáticos.


Conceptos previos imprescindibles para comprender la guía:

  • Page Speed una vez ha evaluado el rendimiento de tu sitio web o Blog te proporcionará una puntuación basada en la ponderación de los puntos enumerados en su análisis. Es muy importante entender que Page Speed sólo da sugerencias, ninguno de sus cambios es obligatorio. 

Conceptos previos para los no iniciados en informática o programación de páginas web:

A continuación repasamos sin entrar en profundos detalles técnicos y buscando facilitar la compresión a los usuarios más noveles en cada concepto que utilizaremos en la guía. Si tienes conocimientos pero no comprendes bien estos conceptos te puede venir bien repasarlos:
  • El ancho de banda del cliente, de nuestro usuario, determina la velocidad a la que le es posible descargar y subir datos a la red. Podemos imaginar el ancho de banda del cliente como un embudo de "tubo pequeño". Por ese "escaso espacio" deben viajar: nuestras imágenes, nuestras hojas de estilo, componentes HTML, scripts, etc... dado que es limitado, debemos gestionar correctamente lo que vamos a "hacer pasar" por ese pequeño "tubito" del embudo. 
  • El ancho de banda actualmente para tasas de transferencias domésticas (caseras) se mide en Megabits. un Megabit por segundo son 1 millón de bits que transmitimos en el espacio de tiempo indicado. 
  • Pensemos ahora en una conexión de ejemplo que un usuario doméstico posee de unos 8 Megabits (Ojo, no Megabytes). Ese usuario puede recibir 8 millones de bits en un segundo. 
  • Muchas de las imágenes u objetos con los que tratamos en nuestro blog, si no son debidamente tratados ocupan varios Megabytes. Un Megabyte son 8 Megabits. Por tanto si nosotros utilizamos imágenes u objetos de más de 1 Megabyte o el total del "peso" de nuestra web supera el Megabyte, la descarga en el cliente superará el segundo.  
  • Si descargamos la friolera de 5 imágenes de 1 Megabyte estamos retardando el dibujado de las mismas en el cliente con 8 Megabits contratados de decarga hasta un total de 5 segundos. Pues haced vuestros propios cálculos si a eso le sumamos muchos más condicionantes como scripts que tengamos cargados, distancia al servidor, latencia y otros tantos factores que puede influir en la ecuación...  
  • El resultado es que si no tomamos medidas, podemos conseguir que una página que nosotros vemos estupenda en nuestro navegador tarde la friolera de 15 segundos en cargarse en el cliente, ¿cuántos de vosotros no habéis cambiado a otra página cuando ha tardado en cargarse más de 5 segundos?... Parece poco, pero delante de un ordenador es una eternidad. Ese es el problema que vamos a intentar paliar estudiando qué mejoras se pueden hacer para que nuestros usuarios no padezcan una lentitud "insoportable" al navegar por nuestro pequeño rincón de Internet.

Realiza una copia de seguridad de tu página web o Blog. Salvaguarda tus datos antes de hacer cualquier cambio:



    Analizando cada Punto de los resultados que Page Speed puede devolverte y aplicando soluciones Paso a paso:



    La importancia de la página principal de nuestro Blog

    • Todos los puntos que en la gestión de imágenes te voy a indicar deben utilizarse especialmente en aquellas que aparecerán en los resúmenes de las entradas de la página principal de tu blog. 

    • Nos centramos sobre todo en la parte principal del Blog por tratarse de la "fachada" exterior que da entrada a todos nuestros contenidos. Cuanto más depurada esté, más rápido se cargará nuestro Blog en sus máquinas.  

    • No obstante, lo mismo que lo aplicas a la página principal con el resumen de las entradas, deberías procurar igualmente emplear estos conceptos en el interior de las entradas. 
    Análisis detallado del problema: los tres factores a tener cuenta al trabajar con imágenes en nuestro Blog
    • La cantidad de imágenes a mostrar en la página principal del blog, la que muestra todas nuestras entradas iniciales, deben ser las estrictamente necesarias. Los resúmenes de entrada no deberían de tener más de una imagen, de manera que dejemos más ancho de banda disponible para direccionar otros objetos que componen nuestro blog en el navegador de nuestros usuarios.
    • El "peso" en Kilo Bytes  de las imágenes de la página principal del Blog debe ser lo más reducido posible. Cuando insertéis imágenes en la entrada que correspondan al apartado de resumen, debéis intentar utilizar el tamaño "pequeño" de las opciones de inserción que se os presentan en Blogger. Luego las del contenido de la entrada podéis hacerlas más grandes pero como mínimo aquellas que se mostrarán en la página principal deben ser reducidas. 
    • La extensión de la imagen es fundamental para que esta se encuentre comprimida todo lo posible. No utilicéis .bmp jamás pues su compresión es bajísima y consumiréis ancho de banda innecesariamente. Siempre tratad de que las imágenes que se muestren en la página principal tengan extensión .jpeg y dentro de las entradas, si queréis más nivel de detalle utilizad .png. 
    • Te explico a continuación cómo poder editar imágenes sin herramientas externas instaladas en tu ordenador para que puedas mejorarlas para poner en tu Blog. La Edición de imágenes con Google+ sin programas externos.
    • Procura buscar imágenes que no contengan resoluciones excesivas, imágenes con tamaños elevados y sin comprimir. Podéis utilizar para cambiar su tamaño cualquier editor de imágenes como Photoshop, Image Resizer o incluso el editor de Google. Podéis utilizar un álbum en Google Plus para colocar las fotos que utilizaréis en vuestro Blog y poder editarlas.
    Aplicando una solución paso a paso:
    Cuando subiste la imagen a Blogger seguramente era más grande que los tamaños que has comprobado que realmente se les ha asignado para dibujarse en la página principal, dentro del resumen de tu entrada. Ahora debes retocar esa imagen para que mida justamente el tamaño que Blogger le ha asignado para dibujarse en el navegador. Así conseguirás ganar en velocidad porque:
    • El navegador de tu usuario no tendrá que reescalar a menor tamaño o a mayor tamaño la imagen que has subido a Blogger para "dibujársela" después a tus usuarios. Es decir, si la imagen mide directamente un valor fijo, que no necesita reescalado, se dibujará más rápido al evitarse el reescalado.
    • La descarga de la imagen será más rápida porque ocupará sólo el tamaño que debe ocupar, ni más ni menos. Es decir, el navegador de tu usuario tardará menos en descargarla porque es más pequeña. 
    •  Vamos a ver tres formas de realizar la optimización de imágenes. En primer lugar una optimización  básica y mínima para mejorar los tiempos de descarga (Optimización A). En segundo lugar una optimización avanzada con mejora de la compresión de imagen sin pérdida de calidad (Optimización B) y por último, el tratamiento de imágenes con aspecto de "icono", donde realizaremos CSS Sprite (Optimización C).
    SOLUCIÓN A) Optimización básica de imágenes.
    Breve resumen de la solución: Vamos a solucionar el problema de "escalado" (scale) de imagen. Recuerda que la imagen tiene un tamaño determinado, si el navegador tiene que "escalarla" para hacerla mayor o menor de su verdadero tamaño, perderá tiempo en aplicar dichos cambios. Por ello, la sugerencia de optimización de imágenes básica es conseguir que la imagen tenga el verdadero tamaño que va a mostrar en pantalla, de manera que el navegador no tenga que escalarla.
    PARTE 1) Descubre el tamaño de la imagen que utilizas en el resumen de tus entradas:

    • El "peso" de la imagen va muy relacionado con su "tamaño" o resolución. Cuantos más píxeles componen una imagen, más compleja es y más espacio ocupa. Voy a explicarte cómo descubrir el tamaño de una imagen ya insertada en tu Blog, dado que son las que vas a corregir. En un futuro, incluso antes de subirlas, podrás ya darles el tamaño adecuado. 

    • Paso a Paso, viendo el tamaño real de la imagen en el Blog  

      • Vamos a ver dos formas de poder medir el tamaño, una muy sencilla y otra más compleja pero avanzada. Una alternativa por medición en el Blog utilizando las herramientas para desarrollo de Explorer o Chrome en cualquier punto del Blog y otra para medirlo directamente en en una imagen del Blog con Explorer. 

        • A.1) Alternativa por medición sobre el Blog en una imagen concreta (la más sencilla):  

        • Haz "clic" derecho sobre la imagen que desees medir y a continuación del menú contextual que Explorer te muestra, selecciona propiedades. Te saldrá una pequeña ventana con el detalle de la imagen sobre la que te has puesto, en Dimensiones te vendrá el ancho y alto que deberías utilizar después al editarla para que no sea necesario que el navegador la reescale.

    Clic derecho sobre la imagen, pulsamos propiedades y miramos Dimesiones en la ventana de información.


        • A.2) Alternativa por medición sobre el Blog de manera libre, sobre cualquier parte del Blog (más compleja pero más avanzada):  

        • En primer lugar debemos conocer el tamaño del "marco" donde va la imagen. Es importante este paso porque dependiendo de lo que mida en píxeles (cada "cuadrito" que compone la imagen) la imagen, en pasos posteriores deberemos editarla para adptarla de manera que quede "encajada" en el cuadro. 

        • Si quieres sigue el ejemplo que te hago con mi Blog para que te sea más sencillo. Está basado en el tutorial que hicimos para poner una imagen de fondo al título.   

        • Para realizar la "medición" en píxeles del ancho y alto del "marco" de la imagen, abrid vuestro blog en Internet Explorer o Chorme (en Mozilla lo que voy a explicar requiere tener instalado "Firebug"). Una vez se muestre la pantalla principal pulsad F12 y se os abrirá el editor de desarrollo que Explorer o Chrome incorporan de serie:

     

          • En Explorer en el menú superior pulsa la opción "Buscar" y después "seleccionar elemento con un clic". Si es con Chorme pulsad el icono con forma de "lupa" que se encuentra en la parte inferior izquierda bajo el bloque de código que se ve de la página.


     


        • Acto seguido dirigid el cursor del ratón a la zona de título y procurad seleccionar el "marco" completo que engloba la imagen, observaréis que está en "<div id="header-inner". Apuntaros los valores que veis en "Height" (alto) y "Width" (ancho) que determinarán el tamaño final que tendrá que tener la imagen que pondremos de fondo del título.
    Se aprecia en el código los textos width (ancho) y height (alto) del marco seleccionado de nuestro blog. 

        • En mi caso, el tamaño del marco (del <div id="header-inner") es de 920 de ancho por 157 de largo.  

        • Esto mismo se puede aplicar a las imágenes de resumen de las entradas, poneros encima de ellas con la lupa seleccionada y veréis el tamaño que tienen asignado. 

        • En Chrome, podrás directamente hacer "clic" derecho sobre la imagen en cuestión y seleccionar "inspeccionar elemento"

    Ponte sobre la imagen, haz "clic" derecho y selecciona "inspeccionar elemento"
    Esto te abrirá las herramientas de desarrollador igualmente pero ya centrado sobre la imagen que quieres medir.
     PARTE 2) Dando el tamaño adecuado a nuestras imágenes con Google+

      • Ahora que has visto en la PARTE 1) cómo descubrir el verdadero tamaño de la imagen, puedes darle el tamaño que realmente debería aplicarse: 

    1) En tu escritorio Google+ fíjate en los iconos a modo de menú que te aparecen a la izquierda: "Inicio", "Perfil", "Explora" y "Fotos". Si pasas el ratón por encima de "fotos" sin hacer clic te saldrá la opción de "Añadir Fotos". 

    2) Te saldrá una pantalla donde puedes poner el "Nombre del Álbum" y a continuación hacer "clic" en el botón "Seleccionar fotos de tu ordenador", donde al pulsarla, podrás subir la imagen que vas a utilizar para tu título del lugar del disco duro donde la tengas almacenada para colocar en el Blog.


    3) Una vez ha subido la imagen, la verás en una ventana "pequeña" a modo Preview, si pasas por encima de la Previsualización, se te dibujarán unos pequeños iconos dentro de la misma donde el que tiene forma de lápiz te abrirá el Editor de Imágenes. 

     4) Antiguamente [Piknic] http://www.picnik.com/ era una potente WEB especializada en la edición de imágenes que finalmente adquirió Google. El editor que se te abre tras realizar el paso 3 es Piknic. Desde aquí vamos a configurar la imagen para que adquiera los valores de altura y anchura deseemos, de manera que no tenga una resolución excesiva y por tanto su peso en Kilo Bytes se reduzca drásticamente.



    •  Tenemos dos opciones:

    • Recortar: puedes extraer de la imagen la porción que te interese para poner en tu Blog. 

    Estamos recortando el trozo que queremos. Ponemos el tamaño del punto deseado de la imagen para mostrar en el Blog.

    • Cambiar Tamaño: reducir directamente el tamaño de la imagen que deseamos utilizar de fondo del marco del título. El problema aquí es ser capaces de conseguir respetar la relación de aspecto de la imagen de origen para que no quede "estirada" o "deformada" cuando la situemos en el blog
    Estamos poniendo que el tamaño de largo sea 920 de ancho por 517 de alto. La imagen original era de 1920x1080, la reducción de resolución nos permite ahorrar en el tamaño que ocupará cuando se descargue en el navegador del usuario.

    5) Si después de haber almacenado la imagen en Google+ deseas utilizar la imagen editada en tu Blog, cuando utilices el icono de "insertar imagen", en lugar de hacer "clic" sobre la opción "Subir" o "Desde este Blog", selecciona la opción "Desde Álbumes Web de Picassa" donde se encontrará la imagen editada.


    SOLUCIÓN B) Optimización avanzada de imágenes

    Breve resumen de la solución: Una vez la imagen ha sido escalada al verdadero tamaño con el que va a "dibujarse" en el navegador de lo usuarios, el siguiente punto a tener en cuenta es su compresión. La compresión nos va a permitir conseguir que el archivo .png o .jpg, ocupen menos espacio sin pérdida de calidad. Esto es esencial para que los tiempos de descarga de la imagen se reduzcan drásticamente. 
    El siguiente nivel de optimización, la compresión: 

    • Cuando preparamos una imagen para subir al Blog consideramos siempre estos pasos:
      • SOLUCIÓN A.1) Buscar la imagen en el formato adecuado, o .jpg o .png para mayor detalle.
      • SOLUCIÓN A.2) Hacer que tenga el tamaño exacto con el que va a ser "dibujada" por el naveagdor. Es decir, por medio de Image Resizer o las herramientas de edición de Google+ la ponemos en un tamaño nativo que no obligue al navegador a reescalarla.
      • SOLUCIÓN B) Por último le damos el máximo nivel de optimización, comprimirla todo lo posible sin pérdida de información para que reduzca su porcentaje de tamaño, liberando el ya de por sí limitado el ancho de banda de nuestros usuarios. 
    • Al subir la imagen a Blogger o nuestros álbumes Google+, una vez escalada adecuadamente le queda el ajuste de compresión exacto.
    • Google recomienda que se utilicen estos dos programas gratuitos para mejorar la compresión de la imagen:



    • Optipng: Programa de código libre alojado en sourceforge.net que se encarga de la optimización total de la compresión para imágenes .png.
    • jpegtran: Programa de código linre alojado en jpegclub.org que se encarga de la optimización total de la compresión de imágenes .jpg.

    Paso a Paso Optipng:

      • 1) Conéctate a la web de Optipng para descargarte su programa aquí
      • 2) Descomprime en tu disco duro el .zip descargado que contiene el programa Optipng.
      • 3) Coloca el .optipng.exe en una carpeta de tu disco duro. Para que sea más sencillo, ponlo en c:\OptimizarPNG y mete en dicha carpeta las imágenes que desees optimizar.
      • 4) Abre un comando MS-DOS. Desde Windows, dale al botón de Inicio, después la opción "Ejecutar" y por último escribe CMD.
      • 5) Dirígete a la carpeta donde pusiste las imágenes .ong a optimizar escribiendo en la linea de comandos "cd OptimizarPNG" o el nombre de la carpeta donde metieras las imágenes.
      • 6) Una vez dentro escribe "optipng.exe -o7" y pulsa enter.
      • 7) Se comenzará a ejecutar el programa de optimización, al finalizar dejará las imágenes arregladas con el mismo nombre que tenían.
      • 8) Sube las imágenes a Blogger de nuevo y vuelvelas a colocar en la entrada donde se encontraran (imágenes o iconos, lo que fuera).
      • 9) Ejecuta Pagespeed y comprueba que ya no hay más optimización que realizar para las imágenes que has arreglado.

    • Eso es todo con los .PNG. Hazlo con los de la página principal, con los que se dibujan cuando el usuario accede al Blog y comprueba la mejora. Luego, una vez que lo hagas por rutina verás que mejora claramente la velocidad de dibujado en los navegadores.
    Paso a Paso JPEGTRAN:

      • 1) Conéctate a la web de jpegclub para descargarte JPEGTRAN aquí
      • 2) Coloca el jpegtran.exe en una carpeta de tu disco duro. Para que sea más sencillo, ponlo en c:\Optimizarjpg y mete en dicha carpeta la  imagen que desees optimizar.
      • 3) Abre un comando MS-DOS. Desde Windows, dale al botón de Inicio, después la opción "Ejecutar" y por último escribe CMD.
      • 4) Ve a la carpeta donde metiste el jpegtran.exe escribiendo " cd Optimizarjpg" o el nombre de la carpeta donde lo introdujeras.
      • 5) Ejecuta el comando "jpegtran -optimize NOMBRE_IMAGEN_ORIGINAL.jpg NOMBRE_IMAGEN_OPTIMIZADA.jpg
      • 6) Sube a Blogger la imagen JPEG optimizada.
    SOLUCIÓN C) Utiliza CSS Sprite
    Breve resumen de la solución: Cuando utilizamos pequeñas imágenes con forma de icono, realizamos muchas solicitudes de descarga contra el servidor para que baje cada una de ellas. Si creamos un "sprite" o contenedor de todas esas pequeñas imágenes y le decimos al navegador "cuándo" tiene que dibujarlas, sólo deberá descargar una sola imagen con todas ellas. El resultado es una mejorar en el rendimiento porque en lugar de tener que descargarse varias imágenes sólo necesita descargar una.  



    • Vamos a crear una imagen "grande" donde irán todos los botones que te hayas descargado. Es decir, en lugar de utilizar una imagen para cada botón, agruparemos todos en una única.
    • Esa imagen única se solicitará al servidor UNA sola vez, con el consiguiente aumento de rendimiento. Por medio de las hojas de estilo, extraeremos "porciones" de la imagen, una porción por cada imagen de icono social que hayas recuperado.
    • Esas porciones tienen unas coordenadas en la imagen grande que sirve para indicar dónde se encuentra cada una. Tomaremos cada porción como si fuera "distinta imagen" para dar la impresión al usuario de que estamos utilzando disntintas imágenes.
    • Conseguiremos disminuir la latencia y la cantidad de peticiones al sevidor porque sólo vamos a trabajar con una imagen y además lo más optimizada posible.




    Ejecuta la guía:  CSS-SPRITE - Pon tus iconos para redes sociales a la máxima velocidad
    Descubrirás cómo conseguir realizar una mucho menor cantidad de peticiones al servidor para poder dibujar tus imágenes o iconos de pequeño tamaño. 



    Escrito por Miguel García Sánchez - Colomer

    Dispuesto a ayudarte con tu Blog en todo lo posible, Diarios de la nube es mi medio para llegar hasta ti. El conocimiento es universal, es del mundo, es de todos, esta es mi parte y la comparto contigo.

    4comentarios:

    1. Buenas Miguel, tengo una pregunta sobre imágenes pero no he sabido ubicarla en ningún otro sitio y de ahí que te la deje aquí. Tengo en portada unas thumbnails de los últimos 5 artículos. La imagen del último artículo se encuentra en 160 x 160 y los otros 4 en 120px x 120px y mi pregunta es como podría especificar las dimensiones de esas imágenes que ya he probado con todo (es un script el que obliga a las imágenes a ponerse en el post num0 a 160 y el resto a 120). Muchas gracias de antemano por tu ayuda!!!

      ResponderEliminar
      Respuestas
      1. Hola,
        esas imágenes estarán montándose en un Javascript que requerirá que midan exactamente eso para que al escalarse en distintas resoluciones todo cuadre. Para cambiarlas deberás utilizar la hoja de esitlos. Con F12 en Google Chrome haz clic sobre una de ellas y verás que puedes alterar en tiempo real la hoja de estilos para ponerle el tamaño que prefieras. Cuando hayas encontrado el deseado, te metes en la plantilla del blog y con CONTROL + F buscas la clase que tocaste haciendo F12 para poner los valores que utilizaste.

        De todas maneras, como te digo, comprueba que no afectas luego al dibujado de imágenes en distintas resoluciones.

        Un saludo!!!

        Eliminar
    2. He probado con thumbnails, thumb-post, a img, img, y varias cosas mas y sigue sin guardar las medidas del width de 160 px y 120 px respectivamente. El botón F12 en mi portátil es modo avión, lo que hago es inspeccionar elemento como tu me enseñaste :) Saludos y gracias por la contestación tan rápida.

      ResponderEliminar
      Respuestas
      1. Ok, pero se trata de buscar el nombre de la clase del css que contiene esas imágenes. Con F12 o en el menú de opciones de Chorme Herramientas y después Herramientas para desarrolladores, si haces "clic" en la lupa, podrás posicionarte encima de esas imágenes y ver la clase a la que pertenecen. Así mismo ahí podrás alterar el width y height para hacer pruebas.

        Un saludo!!!

        Eliminar

     

    © 2015 Por: Miguel García Sánchez - Colomer en Diarios de la nube Todos los derechos reservados.