144

Optimización del rendimiento web

Embed Size (px)

DESCRIPTION

Presentación de la conferencia "Optimización del rendimiento web" impartida en la TLP2k12, en la jornada de desarrolladores (Tenerife LAN Party 2012). Resumen y explicación, aquí: http://www.emezeta.com/articulos/conferencia-optimizar-el-rendimiento-web

Citation preview

Page 1: Optimización del rendimiento web
Page 2: Optimización del rendimiento web

www.emezeta.comJosé Román Hernández - Manz

Page 3: Optimización del rendimiento web

OBJETIVOS PRINCIPALES

Page 4: Optimización del rendimiento web

Buena respuesta (página instantánea, sin retrasos)

Page 5: Optimización del rendimiento web

Servidor debe responder rápido (no esté ocupado)

Page 6: Optimización del rendimiento web

Reducir transferencias de datos (ahorra tiempo y dinero)

Page 7: Optimización del rendimiento web

Conseguir un buen posicionamiento en buscadores

Page 8: Optimización del rendimiento web
Page 9: Optimización del rendimiento web

Sin embargo, la realidad suele ser diferente.

Page 10: Optimización del rendimiento web

CONCEPTOS

Page 11: Optimización del rendimiento web

- Generalmente, usuarios mediante navegadores

Esquema básico

Cliente

www.emezeta.com

Web (HTML)

Page 12: Optimización del rendimiento web

Esquema básico

Cliente

www.emezeta.com

Web (HTML)

Crawlers

Karmacracy GoogleBot BingBot TwitterBot

Page 13: Optimización del rendimiento web

Esquema básico

Cliente

www.emezeta.com

Web (HTML)

Crawlers

Elementos dañinos

Karmacracy GoogleBot BingBot TwitterBot

Spammers Atacantes Harvester Piratas

Page 14: Optimización del rendimiento web

Esquema básico

Cliente

www.emezeta.com

Web (HTML)

Crawlers

Elementos dañinos

Navegadores

Karmacracy GoogleBot BingBot TwitterBot

Spammers Atacantes Harvester Piratas

Chrome Firefox Safari Opera

Page 15: Optimización del rendimiento web

- Crawlers (robots o sistemas automatizados)

- Sistemas dañinos (malware, zombies, atacantes...)

- Generalmente, navegadores (Chrome, Firefox, Safari...)

Esquema básico

Cliente

www.emezeta.com

Web (HTML)

Page 16: Optimización del rendimiento web

- Crawlers (robots o sistemas automatizados)

- Sistemas dañinos (malware, zombies, atacantes...)

- Generalmente, navegadores (Chrome, Firefox, Safari...)

Esquema básico

Cliente

www.emezeta.com

Web (HTML)

Page 17: Optimización del rendimiento web

- Crawlers (robots o sistemas automatizados)

- Sistemas dañinos (malware, zombies, atacantes...)

- Generalmente, navegadores (Chrome, Firefox, Safari...)

Esquema básico

Cliente

www.emezeta.com

Web (HTML)

Page 18: Optimización del rendimiento web

- Crawlers (robots o sistemas automatizados)

- Sistemas dañinos (malware, zombies, atacantes...)

- Generalmente, navegadores (Chrome, Firefox, Safari...)

Esquema básico

Cliente

www.emezeta.com

Web (HTML)

evolutionoftheweb.com

Page 19: Optimización del rendimiento web

ESQUEMA CLIENTE-SERVIDOR

Page 20: Optimización del rendimiento web

- Máquina donde se aloja nuestra web

- Puede ser una, o toda una red de máquinas

- Escoger entre varios tipos de servidores

Esquema básico

Servidor

www.emezeta.com

Web (HTML)

Page 21: Optimización del rendimiento web

- Ideal para enfocarse: escribir o publicar

- Coste 0: Sin gastos de mantenimiento

- Limitaciones o restricciones concretas

- Suelen mostrar publicidad

Tipo de servidor

Hosting gratuito

SO

Page 22: Optimización del rendimiento web

- Muy barato

- Overselling: Ofrecen más de lo que pueden

- Tus “vecinos” repercuten en tu sitio

Tipo de servidor

Servidor Compartido

SO

Page 23: Optimización del rendimiento web

- Estabilidad y rendimiento

- Acceso completo al sistema (incl. root)

- Más caros que los servidores compartidos

Tipo de servidor

Servidor VPS (Virtual-Dedicado)

SO

Page 24: Optimización del rendimiento web

- Máquina íntegra para nosotros

- No tenemos “vecinos”

- Suelen ser bastante caros

Tipo de servidor

Servidor Dedicado

SO

Page 25: Optimización del rendimiento web

- Depende del uso (se adapta según necesidades)

- Ideal para sitios con mucho tráfico

- Administración y mantenimiento complejo

Tipo de servidor

Servidor Dinámico (o elástico)

SO

Page 26: Optimización del rendimiento web

- El cliente pide una web al servidor

Esquema básico

Solicitud o petición

www.emezeta.com

Web (HTML)

Page 27: Optimización del rendimiento web

- El servidor devuelve la página pedida al cliente

Esquema básico

Respuesta

www.emezeta.com

Web (HTML)

Page 28: Optimización del rendimiento web

- Se necesita conocer la IP del servidor

- Una vez la conocemos, realizamos solicitud

- Se suele tardar entre 20-120ms

Esquema avanzado

DNS

www.emezeta.com??

IP 42.42.42.42

dns connect sslsend wait receive

Page 29: Optimización del rendimiento web

- Se realiza y establece una conexión al servidor

- Se envía confirmación de conexión correcta

- Si se usa SSL (HTTPS) se negocia comunicación segura

Esquema avanzado

Conexión

Puedo pasar?

Ok, pasa.

dns connect sslsend wait receive

Page 30: Optimización del rendimiento web

- Se envía la petición del recurso al servidor

- Se envía confirmación de que existe (o no)

Esquema avanzado

Envío

Quiero index.html

Ok, lo tengo

dns connect sslsend wait receive

Page 31: Optimización del rendimiento web

- El servidor procesa los datos

- O espera si está ocupado con otra petición

- La red no tiene efecto en este paso

Esquema avanzado

Espera

Espera mientras preparo tu pedido

dns connect sslsend wait receive

Page 32: Optimización del rendimiento web

- El servidor envía los datos al cliente

- Se envía la cabecera y datos solicitados

Esquema avanzado

Recepción

Toma index.html

dns connect sslsend wait receive

Page 33: Optimización del rendimiento web

- Conexión y ancho de banda del cliente

- Conexión y ancho de banda del servidor

- Recepción además depende del tamaño del archivo

Esquema avanzado

dns connect sslsend wait receive

Dependen de la red

Page 34: Optimización del rendimiento web

- Este proceso ocurre en cada recurso del sitio web

- Imágenes, html, css, javascript, flash, etc...

- Suma total: tiempo considerable

Esquema avanzado

Una web = varios recursos

Page 35: Optimización del rendimiento web

- Extensión para Firefox (versión Lite para Chrome)

- Permite, entre otras cosas, analizar descarga de recursos

Análisis de recursos

getfirebug.com

Page 36: Optimización del rendimiento web

- Modalidad de análisis desde web externa

- Ideal si nuestra conexión es lenta

Análisis de recursos

tools.pingdom.com/fpt

Page 37: Optimización del rendimiento web

Análisis de recursos

developers.google.com/speed/pagespeed/insights

- Consejos ordenados por prioridades

Page 38: Optimización del rendimiento web

Análisis de recursos

tools.pingdom.com/fpt

www.webpagetest.org

Page 39: Optimización del rendimiento web

TECNOLOGÍAS

Page 40: Optimización del rendimiento web

- Información, datos, contenido.

- Bases de datos: MySQL, MariaDB, SQLite, MongoDB...

- Datos: Archivos XML, JSON...

Tecnologías

Contenido

Page 41: Optimización del rendimiento web

- Tecnología que “crea” el sitio

- Lenguajes: PHP, JSP, Python, Perl...

- Frameworks: Django, Ruby on rails, CakePHP...

Tecnologías

Motor

Page 42: Optimización del rendimiento web

- Estructura del sitio

- Lenguaje de etiquetado: HTML4, XHTML, HTML5...

- Un código válido ayuda en la compatibilidad

Tecnologías

Presentación (Estructura)

Page 43: Optimización del rendimiento web

Tecnologías

Presentación (Estructura)

validator.w3.org

Page 44: Optimización del rendimiento web

- Diseño, alineación y estilos

- Recursos de estilo: CSS, tipografías, imágenes...

Tecnologías

Presentación (Apariencia)

Page 45: Optimización del rendimiento web

- Interacción con el usuario (Javascript)

- Procedimientos desde el lado del cliente

- Frameworks Javascript: JQuery, Prototype...

Tecnologías

Presentación (Interactividad)

Page 46: Optimización del rendimiento web

- La petición de una URL, pasa por cada sección

- GET: Pedimos una URL específica

- POST: Enviamos datos (comentarios, formularios...)

Peticiones

Peticiones

Page 47: Optimización del rendimiento web

- Una petición específica de una parte de un artículo

- No pasa por cada sección (ahorra tiempo y recursos)

Peticiones

Peticiones asíncronas (AJAX)

Page 48: Optimización del rendimiento web

ESTRUCTURA

Page 49: Optimización del rendimiento web

Las cosas cambian

Page 50: Optimización del rendimiento web

- Información relacionada con el servidor

- Código de error HTTP (famosos 404, 301, 200...)

- Software de servidor web

Recurso servido

Cabecera de servidor

Cabecera de servidor

Archivo HTML

Page 51: Optimización del rendimiento web

- Título del documento

- Codificación del documento

- Enlace a archivos externos (CSS, JS...)

Recurso servido

<head>

Cabecera de servidor

Archivo HTML

<head> del HTML

Page 52: Optimización del rendimiento web

- Cuerpo de la página (parte visible)

Recurso servido

<body>

Cabecera de servidor

Archivo HTML

<head> del HTML

<body> del HTML

Page 53: Optimización del rendimiento web

CONSEJOS

Page 54: Optimización del rendimiento web

- Evitar sensación de espera (latencia de carga)

Velocidad visual

5seg1seg 10seg

Page 55: Optimización del rendimiento web

- Colocar estilos CSS al principio (bajo <head>)

- Colocar posibles JS al final (sobre </body>)

- Eliminar JS duplicados y combinar si es posible

Velocidad visual

5seg1seg 10seg

loads.in

Page 56: Optimización del rendimiento web

- Colocar estilos CSS al principio (bajo <head>)

- Colocar posibles JS al final (sobre </body>)

- Eliminar JS duplicados y combinar si es posible

Velocidad visual

5seg1seg 10segCompactar JS o CSS:Ayuda a minimizar el ancho de banda

- Eliminar espacios, líneas en blanco, comentarios...

www.refresh-sf.com/yui/

Jquery.js246KB

Jquery.min.js93KB

Page 57: Optimización del rendimiento web

SISTEMA DE CACHÉ

Page 58: Optimización del rendimiento web

Reduce:- Ancho de banda

- Carga del servidor

- Tiempo

Sistema de caché

PRIMER ACCESO

HTML CSS JSLOGO FONDO IMG1 IMG2

Page 59: Optimización del rendimiento web

Cache del navegador:

- Archivos con “tiempo de caducidad”

Sistema de caché

SEGUNDO ACCESO

HTML

CSS JSLOGO FONDO IMG1 IMG2

CACHE DEL NAVEGADOR

Page 60: Optimización del rendimiento web

- Expire

- Cache-control

- E-Tags

Caché por niveles

A nivel de cliente

Page 61: Optimización del rendimiento web

- HTML estático

- APC: Alternative PHP Cache

- Memcached: Caché en RAM

Caché por niveles

A nivel de servidor

Page 62: Optimización del rendimiento web

COMPRESIÓN

Page 63: Optimización del rendimiento web

- El servidor comprime los datos (antes de enviarlos)

Compresión al vuelo

mod_deflate

www.emezeta.com

50KB

Page 64: Optimización del rendimiento web

- El servidor comprime los datos (antes de enviarlos)

- Los datos viajan por la red (comprimidos)

Compresión al vuelo

mod_deflate

www.emezeta.com

Compressed HTML

50KB9KB

Page 65: Optimización del rendimiento web

- El servidor comprime los datos (antes de enviarlos)

- Los datos viajan por la red (comprimidos)

- El cliente descomprime los datos y los usa

Compresión al vuelo

mod_deflate

www.emezeta.com

Compressed HTML

50KB9KB50KB

Page 66: Optimización del rendimiento web

- El servidor comprime los datos (antes de enviarlos)

- Los datos viajan por la red (comprimidos)

- El cliente descomprime los datos y los usa

Compresión al vuelo

mod_deflate

www.emezeta.com

Compressed HTML

50KB9KB50KB

95KB200 hits 19MB

Page 67: Optimización del rendimiento web

- El servidor comprime los datos (antes de enviarlos)

- Los datos viajan por la red (comprimidos)

- El cliente descomprime los datos y los usa

Compresión al vuelo

mod_deflate

www.emezeta.com

Compressed HTML

50KB9KB50KB

95KB200 hits 19MB

23KB200 hits 4,6MB

Page 68: Optimización del rendimiento web

- El servidor comprime los datos (antes de enviarlos)

- Los datos viajan por la red (comprimidos)

- El cliente descomprime los datos y los usa

Compresión al vuelo

mod_deflate

www.emezeta.com

Compressed HTML

50KB9KB50KB

95KB200 hits 19MB

23KB200 hits 4,6MB

HTML JS CSS

JPG PNG MP3

Page 69: Optimización del rendimiento web

IMÁGENES

Page 70: Optimización del rendimiento web

- Imágenes con texturas

- Fotografías con alto nivel de detalle

Imágenes

Imágenes con pérdidas

IMÁGENESCON PÉRDIDAS

IMÁGENESSIN PÉRDIDAS ANIMACIONES VECTORIALES

Page 71: Optimización del rendimiento web

- Imágenes con texturas

- Fotografías con alto nivel de detalle

Imágenes

Imágenes con pérdidas

IMÁGENESCON PÉRDIDAS

IMÁGENESSIN PÉRDIDAS ANIMACIONES VECTORIALES

Page 72: Optimización del rendimiento web

- Imágenes con texturas

- Fotografías con alto nivel de detalle

Imágenes

Imágenes con pérdidas

IMÁGENESCON PÉRDIDAS

IMÁGENESSIN PÉRDIDAS ANIMACIONES VECTORIALES

Page 73: Optimización del rendimiento web

- Dibujos “lisos”

- Bocetos, pocos colores

Imágenes

Imágenes sin pérdidas

IMÁGENESCON PÉRDIDAS

IMÁGENESSIN PÉRDIDAS ANIMACIONES VECTORIALES

Page 74: Optimización del rendimiento web

- Dibujos “lisos”

- Bocetos, pocos colores

Imágenes

Imágenes sin pérdidas

IMÁGENESCON PÉRDIDAS

IMÁGENESSIN PÉRDIDAS ANIMACIONES VECTORIALES

Page 75: Optimización del rendimiento web

- Imágenes en movimiento

Imágenes

Animaciones

IMÁGENESCON PÉRDIDAS

IMÁGENESSIN PÉRDIDAS ANIMACIONES VECTORIALES

Page 76: Optimización del rendimiento web

- Imágenes en movimiento

Imágenes

Animaciones

IMÁGENESCON PÉRDIDAS

IMÁGENESSIN PÉRDIDAS ANIMACIONES VECTORIALES

Page 77: Optimización del rendimiento web

- Imágenes escalables (útil para variar tamaño)

Imágenes

Imágenes vectoriales

IMÁGENESCON PÉRDIDAS

IMÁGENESSIN PÉRDIDAS ANIMACIONES VECTORIALES

Page 78: Optimización del rendimiento web

- Imágenes escalables (útil para variar tamaño)

Imágenes

Imágenes vectoriales

IMÁGENESCON PÉRDIDAS

IMÁGENESSIN PÉRDIDAS ANIMACIONES VECTORIALES

Formato SVG

Page 79: Optimización del rendimiento web

- Imágenes escalables (útil para variar tamaño)

Imágenes

Imágenes vectoriales

IMÁGENESCON PÉRDIDAS

IMÁGENESSIN PÉRDIDAS ANIMACIONES VECTORIALES

luci.criosweb.ro/riot/

Page 80: Optimización del rendimiento web

Imágenes con peso considerable

Imágenes

Lazy Load (carga perezosa)

81KB

82KB

73KB

108KB

4,17MB

Page 81: Optimización del rendimiento web

Imágenes con peso considerable

Sólo se transfiere imagen de carga

Imágenes

Lazy Load (carga perezosa)

2KB

-

-

-

2KB

Page 82: Optimización del rendimiento web

Imágenes con peso considerable

Sólo se transfiere imagen de carga

A medida que desplaza el usuario

se cargan las imágenes

Imágenes

Lazy Load (carga perezosa)

81KB

82KB

-

-

165KB

Page 83: Optimización del rendimiento web

Imágenes con peso considerable

Sólo se transfiere imagen de carga

A medida que desplaza el usuario

se cargan las imágenes

Imágenes

Lazy Load (carga perezosa)

81KB

82KB

73KB

-

238KB

Page 84: Optimización del rendimiento web

Imágenes con peso considerable

Sólo se transfiere imagen de carga

A medida que desplaza el usuario

se cargan las imágenes

Ahorra tiempo y transferencia

Imágenes

Lazy Load (carga perezosa)

81KB

82KB

73KB

108KB

346KB

Page 85: Optimización del rendimiento web

Imágenes con peso considerable

Sólo se transfiere imagen de carga

A medida que desplaza el usuario

se cargan las imágenes

Imágenes

Lazy Load (carga perezosa)

81KB

82KB

73KB

108KB

346KB

www.appelsiini.net/projects/lazyload

Page 86: Optimización del rendimiento web

REDUCCIÓN DE PETICIONES

Page 87: Optimización del rendimiento web

CSS Sprites

CSS sprites

Unir todas las imágenes en una sola

Ahorra número considerable de peticiones

Page 88: Optimización del rendimiento web

Imágenes en línea (Data URL)

data:image/png;base64,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

glkwAAAAAElFTkSuQmCC

Page 89: Optimización del rendimiento web

Imágenes en línea (Data URL)

data:image/png;base64,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

glkwAAAAAElFTkSuQmCC

Reducir número de peticiones

Útil sólo para iconos pequeños

Page 90: Optimización del rendimiento web

Imágenes en línea (Data URL)

data:image/png;base64,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

glkwAAAAAElFTkSuQmCC

Reducir número de peticiones

Útil sólo para iconos pequeños

IE8, como máximo 32KB

Page 91: Optimización del rendimiento web

Icono de 16x16 pixels que representa la web

favicon.ico

- Recibe muchísimas peticiones. Ej: +50.000 al mes- Optimizar al máximo y hacerlo “cacheable”

favicon.ico 3KB x50.000 = 150MB/MES

favicon.ico 0,66KB x50.000 = 33MB/MES

Page 92: Optimización del rendimiento web

Frameworks y fuentes comunes desde una misma URL

Diferentes sitios usan misma URL (ya cacheada en cliente)

www.google.com/webfontsdevelopers.google.com/speed/libraries/devguide

https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js

http://fonts.googleapis.com/css?family=Belgrano

Page 93: Optimización del rendimiento web

AUMENTAR RENDIMIENTO

Page 94: Optimización del rendimiento web

Contenido estático

Separar en subdominios

- Descargas paralelas (limitado a 2 en HTTP 1.1)

www.emezeta.com static.emezeta.com

Page 95: Optimización del rendimiento web

Contenido estático

Separar en subdominios

- Descargas paralelas (limitado a 2 en HTTP 1.1)

www.emezeta.com static.emezeta.com

- Contenido estático sin cookies (tráfico inútil)

Page 96: Optimización del rendimiento web

Contenido estático

Balancear con otro servidor

- Amazon S3: Alojamiento “mayorista”

- 0,1€ cada TB/mes (y reduciendo)

- 0,008€ cada 10.000 peticiones/mes (y reduciendo)

www.emezeta.com static.emezeta.com

Page 97: Optimización del rendimiento web

1995 2004

Muy potente y extendido

Consume muchamemoria

Buen rendimiento y ligero

No compatible con algunas funciones

Page 98: Optimización del rendimiento web

- Nginx recibe todas las peticiones

- Si se trata de contenido estático, lo sirve Nginx

- Si se trata de contenido dinámico, lo sirve Apache

Nginx como proxy inverso

Aligerar carga del servidor

Page 99: Optimización del rendimiento web

- Nginx recibe todas las peticiones

- Si se trata de contenido estático, lo sirve Nginx

- Si se trata de contenido dinámico, lo sirve Apache

Nginx como proxy inverso

Aligerar carga del servidor

Servidores a nivel mundial

Page 100: Optimización del rendimiento web

www.google.com/webmasters/tools

Page 101: Optimización del rendimiento web

Añadir sitios

Page 102: Optimización del rendimiento web

1. Usando Google Analytics

2. Usando un archivo html

3. Etiqueta meta en <head>

4. Proveedor DNS

Proceso de verificación

Page 103: Optimización del rendimiento web

Se puede orientar una web a un país concreto

Mejora el posicionamiento para ese país

Empeora el posicionamiento para otros

Configuración

Page 104: Optimización del rendimiento web

Se puede modificar la frecuencia de rastreo(no siempre)

Información actualizada en el buscador de Google

Incrementa el tráfico en el sitio (puede colapsarlo)

Configuración

Page 105: Optimización del rendimiento web

Especificar parámetros URL representativos(medidores, campañas, etc...)

Configuración

Page 106: Optimización del rendimiento web

Problemas de rastreo(útil: errores de servidor o de acceso)

Salud

Page 107: Optimización del rendimiento web

Estadísticas de rastreo

- Páginas rastreadas al día (imagen superior)

- Kilobytes descargados al día

- Tiempo de descarga de una página (en mseg)

Salud

Page 108: Optimización del rendimiento web

Robots.txt

Sugerencias para robots: «Esto NO se mira»

User-agent: GooglebotDisallow: /pagina/*

Page 109: Optimización del rendimiento web

Robots.txt

Sistema para sugerir a los crawlers donde no buscar

- Un buen crawler obedecerá el robots.txt

- No todos harán caso de las recomendaciones

Page 110: Optimización del rendimiento web

Robots.txt

Impedir acceso y reducir sobrecarga del servidor

Prohibir indexación de ciertas zonas en buscadores

Eliminar contenido duplicado en buscadores

No bloquea “a la fuerza” a ciertos robots

Page 111: Optimización del rendimiento web

Estado y funcionamiento del robots.txt

Salud

Page 112: Optimización del rendimiento web

Consultas de búsqueda (impresiones, clicks, páginas...)

Tráfico

Page 113: Optimización del rendimiento web

Consultas de búsqueda (impresiones, clicks, páginas...)

Tráfico

Page 114: Optimización del rendimiento web

Tráfico

Consultas de búsqueda (impresiones, clicks, páginas...)

Page 115: Optimización del rendimiento web

Actividad de +1 (Google Plus)

Page 116: Optimización del rendimiento web

Listado (XML) con todos los recursos de tu web

Sitemap.xml: Artículos Imgmap.xml: Imágenes

Mapas de sitio (Sitemaps)

Page 117: Optimización del rendimiento web

Mapas de sitio (Sitemaps)

Page 118: Optimización del rendimiento web

Consejos para mejorar indexación (posicionamiento)

Descripción (meta):

- Duplicada- Demasiado larga

- Demasiado corta

Título:

- Ausente

- Duplicado

- Demasiado largo

- Demasiado corto- No informativo

Page 119: Optimización del rendimiento web

Google Webmaster Tools (Otros)

- Sistema de mensajes

- Detección de malware

- Eliminar URL de Google

Page 120: Optimización del rendimiento web

www.google.com/webmasters/tools

www.bing.com/toolbox/webmaster

Page 121: Optimización del rendimiento web

CDN: RED DE DISTRIBUCIÓN DE CONTENIDOS

Page 122: Optimización del rendimiento web

CDN: Red de distribución de contenidos

Servidores en EEUU (peticiones más lentas)

Page 123: Optimización del rendimiento web

CDN: Red de distribución de contenidos

Servidores en España (peticiones más rápidas)

Page 124: Optimización del rendimiento web

www.cloudflare.com

Page 125: Optimización del rendimiento web

CDN: Red de distribución de contenidos

Servidores más cercanos distribuyen copias (muy rápido)

Page 126: Optimización del rendimiento web

CDN: Red de distribución de contenidos

Actualmente: 14 Data Centers en todo el mundo

Page 127: Optimización del rendimiento web

Esquema con CDN Cloudflare

Solicitud o petición con un CDN

www.emezeta.com

Web (HTML)Static resources

Page 128: Optimización del rendimiento web

Más velocidad (servir recursos más rápido y cerca)

Esquema con CDN Cloudflare

Solicitud o petición con un CDN

www.emezeta.com

Web (HTML)Static resources

Page 129: Optimización del rendimiento web

Más velocidad (servir recursos más rápido y cerca)

Ahorro de transferencia y CPU para el servidor final

Esquema con CDN Cloudflare

Solicitud o petición con un CDN

www.emezeta.com

Web (HTML)Static resources Static resources

Page 130: Optimización del rendimiento web

Más velocidad (servir recursos más rápido y cerca)

Ahorro de transferencia y CPU para el servidor final

Servicio gratuito (servicios premium más avanzados)

Esquema con CDN Cloudflare

Solicitud o petición con un CDN

www.emezeta.com

Web (HTML)Static resources

Page 131: Optimización del rendimiento web

Activar los dominios que pasarán antes por el CDN

Prerequisitos para Cloudflare

Redirección de DNS hacia Cloudflare

Page 132: Optimización del rendimiento web

Recibir IPs reales en el servidor (en lugar de IP del CDN)

Nota: Analytics, Adsense (u otros) necesitan IPs reales

Prerequisitos para Cloudflare

Instalación de módulo para IP reales

Page 133: Optimización del rendimiento web

- Tráfico de usuarios

- Crawlers y robots

- Amenazas y ataques

Información analítica

Informes del tráfico recibido

Page 134: Optimización del rendimiento web

- Porcentaje de tráfico regular, robots y amenazas

- Nivel de seguridad ante ataques

- Procedencia de ataques por países

Información analítica

Ejemplo de Emezeta.com (4 May al 4 Jun)

Page 135: Optimización del rendimiento web

Información analítica

Ahorro de peticiones y transferencia

- Peticiones: 28 mill. 2 mill (93% menos)

- Transferencia: 431GB 103GB (76% menos)

Page 136: Optimización del rendimiento web

Información analítica

Peticiones de robots de buscadores

- Actividad recibida de los crawlers de buscadores

Page 137: Optimización del rendimiento web

Control de amenazas

Panel de control de amenazas

- Gestión de actividad

- Tipo de amenaza y nivel de peligro

- Posibilidad de incluirlo en una lista blanca/negra

Page 138: Optimización del rendimiento web

Cloudflare: Apps

Apps externas

- Multitud de apps externas complementarias

Page 139: Optimización del rendimiento web

Cloudflare: Apps

Apps externas

- Multitud de apps externas complementarias

Protección contra scrapping

Page 140: Optimización del rendimiento web

Hotlinking

Protección de robo de imágenes

- Uso de tus imágenes en otras webs (por otras personas)

- Repercute en la transferencia del servidor

- Si está muy extendida, puede tirar el servidor a peticiones

Mi web Mi web

Otra web

Otra web

Otra web

Otra web

Taringa Otra web

x Visitantes

Page 141: Optimización del rendimiento web

Planes de Cloudflare

Planes

- Gratuito: CDN, seguridad básica, panel de control, etc...

- Premium: Muchas mejoras (Ej: Railgun, cachear lo “incacheable”)

Page 142: Optimización del rendimiento web

Planes de Cloudflare

Planes

- Gratuito: CDN, seguridad básica, panel de control, etc...

- Premium: Muchas mejoras (Ej: Railgun, cachear lo “incacheable”)

Page 143: Optimización del rendimiento web

RONDA DE PREGUNTAS

Page 144: Optimización del rendimiento web

Créditos

EnlacesLimitaciones de Blogger: http://support.google.com/blogger/bin/answer.py?hl=es&answer=42348

Robots. Accesos no humanos a la web: http://www.emezeta.com/articulos/robots-accesos-no-humanos-a-la-web

Robots.txt. Todo lo que debería saber: http://www.emezeta.com/articulos/robots-txt-todo-lo-que-deberia-saber

htaccess. Bloqueando a la fuerza: http://www.emezeta.com/articulos/htaccess-bloqueando-a-la-fuerza

Creando imágenes en línea (Data URL): http://websemantics.co.uk/online_tools/image_to_data_uri_convertor/

Crear rollover con CSS Sprites: http://www.emezeta.com/articulos/crear-rollover-con-css-sprites

Optimizar imágenes: http://www.emezeta.com/articulos/12-aplicaciones-para-optimizar-imagenes

Formatos de imagen: http://www.emezeta.com/articulos/formatos-de-imagen-guia-de-optimizacion