34
Mejores prácticas para acelerar sitios web Juan Eladio Sánchez Rosas Mozilla Perú

Optimizando Sitios Web

Embed Size (px)

Citation preview

Page 1: Optimizando Sitios Web

Mejores prácticas para acelerar sitios webJuan Eladio Sánchez RosasMozilla Perú

Page 2: Optimizando Sitios Web

Hablemos de desarrollo web

Page 3: Optimizando Sitios Web

¿Cómo abrimos una página web?

Page 4: Optimizando Sitios Web

Cuando una página demora ...

• Culpamos al:

• Navegador de Internet

• Proveedor de Internet

• Programador

Page 5: Optimizando Sitios Web

¿Donde nos vamos a enfocar?

Page 6: Optimizando Sitios Web

Mejores prácticas, ¡Ahora!

Page 7: Optimizando Sitios Web

Contenido

• Realizar menos peticiones HTTP

• Combinar archivos CSS y JavaScript

• CSS Sprites y Mapas de imágenes

Page 8: Optimizando Sitios Web

¿CSS Sprites?

• Problema: Imágenes a la manera “no tan antigua”

#nav li a {background:none no-repeat left center}#nav li a.item1 {background-image:url('../img/image1.gif')}#nav li a:hover.item1 {background-image:url('../img/image1_over.gif')}#nav li a.item2 {background-image:url('../img/image2.gif')}#nav li a:hover.item2 {background-image:url('../img/image2_over.gif')}

Page 9: Optimizando Sitios Web

CSS Sprites: 1 imagen para todo

• Solución con CSS Sprites

#nav li a {background-image:url('../img/image_nav.gif')}#nav li a.item1 {background-position:0px 0px}#nav li a:hover.item1 {background-position:0px -72px}#nav li a.item2 {background-position:0px -143px;}#nav li a:hover.item2 {background-position:0px -215px;}

Page 10: Optimizando Sitios Web

CSS Sprites en el mundo real

Page 11: Optimizando Sitios Web

Contenido

• Reducir búsquedas de DNS

• Evitar redirecciones

• Evitar errores 404

Page 12: Optimizando Sitios Web

Servidor

• Usar una Content Delivery Network

• Añadir cabeceras Expires o Cache-Control

• Usar componentes con compresión Gzip

• Configurar ETags

• Usar GET para peticiones AJAX

• Especificar Content-Type y Charset

Page 13: Optimizando Sitios Web

¿Qué fue todo eso?

Page 14: Optimizando Sitios Web

Content Delivery Network

• Red de distribución de contenido

Page 15: Optimizando Sitios Web

Expires / Cache-Control Headers

• Objetivo: Almacenar componentes en memoria caché evitando hacer más peticiones

<IfModule mod_expires.c>ExpiresActive on# Images gif jpeg pngExpiresByType image/x-icon "access plus 1 year"ExpiresByType image/gif "access plus 1 month"# Stylesheets, JavaScript, Others (Flash/FLV/PDF)# text/css, application/x-javascript, # application/x-shockwave-flash, video/x-flv...</IfModule>

Page 16: Optimizando Sitios Web

GZip

• Comprime alrededor de 70% de respuesta

• Soportado por el 90% de tráfico de navegadores

• Apache: mod_gzip / mod_deflate

• Usar en archivos de texto, no binarios

Page 17: Optimizando Sitios Web

Entity Tags (ETags)

• Mecanismo usado para determinar si un componente en caché de navegador coincide con servidor de origen

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)(\.gz)?$">Header unset EtagFileETag None</FilesMatch>

Page 18: Optimizando Sitios Web

Content-Type y Charset

• Si no son especificados el navegador tratará de averiguarlos

• En servidor:

• Content-Type: text/html; charset=UTF-8

• En cliente:

• <head><meta http-equiv="Content-Type" content="text/html;charset=utf-8">

Page 19: Optimizando Sitios Web

Elementos estáticos

Page 20: Optimizando Sitios Web

CSS: Hojas de estilo

• Colocar hojas de estilo al principio

• <head><link rel="stylesheet" type="text/css" href="style.css" /></head>

• Evitar CSS Expressions

• background-color: expression( (new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" );

• Evitar Filtros

• AlphaImageLoader

Page 21: Optimizando Sitios Web

... y JavaScript

• Colocar JavaScript al final

• <script src="script.js"></script>

• JavaScript y CSS en archivos externos

• Remover caracteres innecesarios en JavaScript (Minify)

• y también en CSS y HTML

• Remover scripts duplicados

• O no utilizados

Page 22: Optimizando Sitios Web

Imágenes (A)

• Optimizar imágenes

• GIF: Probar convertir a PNG

• JPEG: Usar en fotografías

• Herramientas: pngcrush / jpegtran

• Combinar imágenes en una sola

• Mostrarlas usando CSS Sprites

Page 23: Optimizando Sitios Web

Imágenes (B)

• No escalar imágenes en HTML

• NO significa dejar de usar width y height

• Hacer que favicon.ico sea pequeño y cacheable

Page 24: Optimizando Sitios Web

Otros

• Repartir componentes entre dominios

• Minimizar uso de iframes

• Mantener componentes bajo 25 KB

• Evitar <img src=””> (sin dirección)

Page 25: Optimizando Sitios Web

Y todo esto, ¿que tienen que ver con Firefox?

Page 26: Optimizando Sitios Web

Firebug

• Inspeccionar código

• Modificar estilo y estructura

• Depurar código JavaScript

• Analizar uso de red y desempeño

• Extender con más complementos

Page 27: Optimizando Sitios Web

Firebug

Page 28: Optimizando Sitios Web

Firebug + Yahoo! YSlow

• Analiza sitios web

• Y sugiere formas de mejorarlos

• Reglas basadas en

• Best Practices for Speeding Up Your Web Site

developer.yahoo.com/performance/rules.html

Page 29: Optimizando Sitios Web

Firebug + Yahoo! YSlow

Page 30: Optimizando Sitios Web

Firebug + Google PageSpeed

• No disponible en Firefox Addons

• code.google.com/speed/page-speed/

• Reglas basadas en

• Web Performance Best Practicescode.google.com/speed/page-speed/docs/rules_intro.html

Page 31: Optimizando Sitios Web

Firebug + Google PageSpeed

Page 32: Optimizando Sitios Web

“Bueno, leerlo es una cosa, entenderlo es otra”

Page 33: Optimizando Sitios Web

Una nota al pie

Constantemente trabajamos en Firefox para que se comporte mejor en tu experiencia en la web.

Nuestro objetivo es llevarte donde necesitas ir lo más rápido y fácil posible.

Rendimiento en Firefox

Page 34: Optimizando Sitios Web

Mejores prácticas paraacelerar sitios web

Mozilla Perúmozilla.pewww.facebook.com/mozillaperugroups.google.com/group/mozilla-peru

Juan Eladio Sánchez Rosasjesanchez(a)mozilla.peblogs.antartec.com/opensourceslideshare.net/juaneladio