Optimizacion Web – Reducción de peticiones HTTP

Jan 12

¿Qué es esto?

Este tipo de optimización se suele encontrar en muchos artículos y libros al respecto como la más importante y hay un factor que es primordial para esta consideración, que es que aplica a todo tipo de situaciones, tanto para sitios que tienen usuarios de una sola vez como para aquellos sitios que cuentan con usuarios recurrentes.

La reducción de peticiones HTTP consiste a grandes rasgos en reducir el número de componentes a solicitar de un sitio web, llámense imágenes, archivos CSS, JS, etc. lo importante es que sean menos!!. Ahora bien esto no esta peleado ni con buenas prácticas de programación porque es obvio que no hay ni pizca de modularidad en programar sobre un solo archivo JS, ni tampoco está peleado con el diseño web, porque esta claro que el diseño de un sitio tiende a incluir elementos tanto gráficos como de hojas de estilos así que no se preocupen por esto ahora que ya se explicará como obtener los beneficios de esta optimización sin sacrificar ni programación ni elementos de diseño.

¿Por qué es importante?

Lo que hace tan importante este tipo de optimización es como se gasta el tiempo de quien esta detrás de la pantalla de nuestros sitios web, el usuario final, aquel que tendrá que pasar un montón de tiempo esperando a que nuestros sitios carguen y decida no volver jamás o el que se sienta cómodo con nuestro sitio y se convierta en un visitante recurrente. Y es que de acuerdo a datos obtenidos en Yahoo y mencionados en el libro High Performance Web Sites – Essential Knowledge for Frontend Engineers de Steve Souders sólo del 10 al 20% del tiempo de respuesta del usuario final se gasta en la obtención del documento HTML, cifras muy contrastantes si se comparan con el 80 a 90% del tiempo que se toma en la descarga de componentes.

Ahora bien este punto no trata de minimizar el tamaño de los componentes sino los componentes en sí y esto es porque cada que se solicita un componente se hace una petición HTTP, la cual gasta tiempo y ancho de banda, lo que provoca que nuestros sitios puedan tardar más en cargar.

¿Qué hago para resolver esto?

Como dijimos al principio de este artículo, no es necesario que cambies por completo tu forma de programar, aunque esto no significa que no habrá ningún cambio. Existen varias técnicas recomendadas para lograr reducir el número de componentes y una gran cantidad de herramientas que nos ayudarán a lograr esto de forma sencilla, así que empecemos:

Reducción del número de imágenes

Existen diferentes técnicas para lograr reducir el número de imágenes de un sitio web, y con esto no me refiero a desaparecer algunas cuantas y dejar solo unas pocas para trabajar con el sitio porque seguro recibiré más de un reclamo de los diseñadores. Con esto me refiero a combinar imágenes en una sola más grande que sirve como de contenedor.

Anteriormente existía la creencia de que esto no era una buena práctica, pero eso es cosa del pasado, la realidad es que si lo hacemos adecuadamente este proceso nos dará como resultado una imágen de tamaño total menor al de la suma de las imágenes que contiene. Esto lo podemos realizar de diferentes maneras, con mapas de imágenes, sprites CSS o con imágenes en línea.

La manera más difundida de hacer esto es con sprites CSS, que como se comentó anteriormente no es mas que hacer una imagen que contiene otras imágenes y de las cuales sabemos su posición con respecto a la primera. Esta técnica se suele aplicar mucho en imágenes cuya naturaleza implica que siempre se van a cargar juntas, como las imágenes que representan los diferentes estados del botón de un menú.

Existen servicios como CSS Sprite Generator ó como SpriteMe que te ayudarán a crear tus sprites de forma sencilla y que además te evitarán la engorrosa tarea de crear el CSS adecuado para el mismo. Podemos ver un ejemplo de utilización de un sprite CSS en aquí. Observando el código fuente podemos notar como se hizo el uso del sprite CSS.

Primeramente veamos como pondríamos “la imagen”


Ahora veamos el código CSS necesario

.adonFirefoxImage
{
    background-image: url("http://www.octaviocortes.com/wp-content/uploads/2010/12/componentes_firefox.png");
    background-repeat: no-repeat;
    padding-left: 40px;
}
.adonFirefox-firebug
{
    background-position: 0 -128px;
    height: 32px;
}

Combinar scripts y hojas de estilo

Esto de lo que trata es de tener el menor número de archivos posibles y para esto podemos tratar de combinar los scripts de los que hacemos uso en nuestro sitio en la menor cantidad de archivos, lo mismo aplica para las hojas de estilo, obviamente no se trata de combinar en un solo archivo tanto scripts como hojas de estilo, creo que esta por demás pero igual lo aclaré.

Y me imagino que están pensando “este tipo esta loco, claro que no voy a perder modularidad por andar haciendo optimizaciones nadie programa así..” y tienen razón, de hecho yo no recomiendo que lo hagan en la etapa de desarrollo, es más bien en lo que se conoce como “deploy” o lo que es lo mismo la etapa en la que haces/mandas los archivos que irán directamente a producción en donde debe realizarse este proceso, que a grandes rasgos es meter todos los scripts a un solo archivo js y todos las hojas de estilo a un solo archivo css.

Bueno para los que manejan WordPress esta es una tarea que se puede automatizar muy fácilmente mediante el uso de plugins. Yo les recomiendo instalar el W3 Total Cache ya que cumple con esta tarea y nos ayuda con muchas otras más optimizaciones, sin necesidad de tener un montón de plugins instalados.

Para aquellos que gestionan su sitio directamente en PHP o con algún framework orientado a este lenguaje de programación les recomiendo chequen el proyecto minify el cual cumple perfectamente con el propósito de combinación de archivos y además realiza otras tareas como la minificación de los mismos.

Ir al índice

Complementos de Firefox para desarrolladores y diseñadores web

Dec 18

Firefox se ha vuelto muy popular entre la gente que nos dedicamos al desarrollo y diseño web, y una de las razones por las que ha sucedido esto es que cuenta con una cantidad enorme de complementos de calidad que se mantienen bien actualizados. La siguiente es una lista de los que entre mi experiencia y la revisión de otros artículos creo son los más útiles, esta lista solo contiene aquellos complementos compatibles con la versión 3.6.13 que hasta este momento es la última.

Probablemente el mejor complemento en cuanto a desarrollo web se refiere, y es que puedes hacer muchísimo, como ver y modificar el código html, css, javascript, inspeccionar elementos, verificar las peticiones al servidor, etc. Pero lo que hace a este complemento realmente fuerte es que sirve como base para otros complementos. Por lo que Firebug es sin duda para mi el mejor de la lista!!.

Complementos para Firebug
Este complemento nos ayuda a analizar nuestros sitios web basado en las reglas de Yahoo para sitios web de alto rendimiento, además nos da recomendaciones sobre como mejorar el rendimiento del sitio y provee acceso a herramientas como Yahoo Smush.it y JSLint.
Complemento de Google para Firefox para desarrolladores web que nos permite evaluar el rendimiento de nuestras páginas web y sobre todo nos ofrece recomendaciones de como mejorar. Además sirve como entrada hacia la documentación de Google sobre buenas prácticas de optimización de sitios web.
Este complemento te permite conectarte a la consola de firebug mendiante una llamada a un método de PHP. Es ideal para desarrollo AJAX con respuestas JSON o XML. Es importante hacer notar que el envíó de datos se realiza a partir del encabezado, lo que significa que todos los datos de prueba no interfieren con el contenido original de tu página web.
Algo muy básico, para algunos tal vez trivial, pero para mí excelente. Este complemento te resalta la sintaxis del código Javascript mostrado en Firebug.
Este complemento permite visualizar y manejar las cookies del navegador.

Otro excelente complemento, definitivamente imprescindible, y es que la barra de herramientas de Web Developer te permite controlar y accesar a un montón de cosas. Puedes habilitar/deshabilitar Javascript, CSS, imágenes, editar código HTML, redimensionar el navegador, realizar validaciones, etc.
Prueba tus páginas web como si estuvieras en Internet Explorer ¡pero sin necesidad de abrirlo!. Al menos un respiro para los que nos somos tan adeptos del IE.
Complemento para desarrolladores que permite interactuar con servicios web y otros recursos web que te permiten realizar peticiones HTTP, establecer el “entity body” y el tipo de contenido. Todo esto te permite interactuar con servicios web e inspeccionar los resultados.
Validador de HTML para Firefox
Excelente complemento que nos indica los errores de coódigo (X)HTML que hay en nuestras páginas web, así como link rotos, etc.
Problemas con links rotos… Este complemento te ayudará a validar los links de tú pagina web, solo tienes que ejecutarlo y listo!!!
Porque siempre es útil contar con una herramienta para seleccionar colores… además añade funcionalidad de zoom y medición de distancias.
Complemento que como su nombre lo indica sirve para tomar medidas, ya que nos permite dibujar una regla que nos indica tanto el alto como el ancho dibujados.
Complemento ideal para webmasters que permite obtener diferentes parámetros relacionados con optimizaciones SEO.
Cliente de FTP que provee un fácil e intuitivo accesso a servidores FTP.
Visualiza los encabezados HTTP de una página web mientras se cargan.
Complemento que permite ver y modificar encabezados HTTP/HTTPS y parámetros de POST.
Este complemento es un analizador HTTP.
Complemento que provee de un poderoso entorno de pruebas para Javascript.
Este complemento te permite visualizar cualquier Javascript que corra sobre una página web, incluso si este está ofuscado y/o generado al vuelo.
Te permite personalizar la forma en que una página web se despliega usando Javascript.
Creación de capturas de pantalla de páginas web que además te permite crear anotaciones tanto de texto como gráficas.
Captura toda una página web, una selección, algún frame en particular, etc. y te permite guardarlo a un archivo o copiarlo al portapapeles.
Permite analizar la información de la fuente de cualquier elemento en la página web, así como copiar al portapapeles, realizar reemplazos en línea, etc.
Valida una página web usando el validador CSS de la W3C.
Visualizador de archivos CSS.
Poderosa y amigable herramienta que nos ayuda a seleccionar elementos de nuestras páginas web y realizar direfentes acciones con los mismos.
Complemento que nos muestra una barra lateral, desde la cual podemos modificar el código CSS de la página en cuestión.
Complemento que nos permite generar texto Lorem Ipsum.
Complemento para inspeccionar el DOM
Creación de paletas de colores basadas en la página web actual para diferentes programas de manejo de imágenes.

Además están estos otros que aunque encontré referencia a ellos en varios sitios, desafortunadamente no son compatibles con la versión 3.6 de Firefox, pero que igual valdría la pena echarles un ojo de vez en cuando para ver si se actualizan.

Fuentes:

Herramientas para conseguir un negocio web exitoso

Dec 09

Actualmente hay miles de herramientas web que te pueden ayudar a tener un sitio web exitoso, el problema es cual elegir. Estas son algunas bastante populares ojalá les sirva:

Diseño – Conceptos – Creatividad

Planeación

  • http://deskera.com – DeskEra interactua excelentemente con programas de manejo de projectos como Microsoft Project®

Administración y Notas

Colaboración

Plataforma

Probar tu sitio

Análisis y diagnóstico

Redes sociales (hay demasiadas para nombrarlas todas…)

Digital Marketing

Fuente: refreshsd.org

Herramientas para creacion de archivos .htaccess

Dec 06

Apache htaccessUn archivo .htaccess es un archivo para Apache que nos permite definir diferentes directivas de configuración, esto se hace usualmente mediante el uso de expresiones regulares lo cual dificulta un poco la creación de reglas. Afortunadamente ya existen herramientas que nos ayudan a crear estos archivos, al menos de forma básica. Estas son algunas de ellas:

Algunas buenas ligas:

Mi recomendación es que si les interesa mucho el tema o necesitan algo menos común empiecen a leer libros de Apache, les dejo algunos nombres:

  • Apress The Definitive Guide to Apache mod_rewrite
  • O’Reilly Apache Cookbook: Solutions and Examples for Apache Administrators
  • O’Reilly Apache Security
  • Apress Pro Apache
  • O’Reilly Apache 2 Pocket Reference: For Apache Programmers & Administrators

15 cosas por las que los desarrolladores web deberiamos estar agradecidos

Dec 05

Les dejo un artículo que habla sobre algunas de las herramientas más usadas en el desarrollo web, en lo personal creo que faltaron algunas como Netbeans, Eclipse, SVN, Trac, etc, pero ya habrá tiempo de mencionarlas a estas también.

Via: webjackalope.com15 cosas por las que los desarrolladores web deberiamos estar agradecidos

Los 15 productos mas usados de Google para la gente que construyen paginas web

Dec 03

Google products

Recientemente me encontré un artículo sobre los productos de Google para la gente que contruye páginas web y me pareció bastante interesante, esta es la liga. ¿Y tú cuantos usas?…

Por que viajar en el tiempo es imposible

Dec 03

time travelFuente: www.buzzfeed.com/reddit/simple-example-of-why-time-travel-is-impossible-p

Performance Optimization WordPress Plugins by W3 EDGE