Escolar Documentos
Profissional Documentos
Cultura Documentos
Por todo ello queda claro que acelerar tu web es imprescindible, y no sólo para
posicionarte en Google, sino para preservar tus ingresos.
o 102
COMPARTIR f s h
En esta guía te explico cómo optimizar el rendimiento de tus páginas y la experiencia
TOMÁS DE TERESA
de usuario para lograr rankings y bene cios más altos.
ARTÍCULOS RECURSOS
Contenidos:
o 102 f s h
Cómo cargar CSS asíncronamente
COMPARTIR
Activar la compresión
TOMÁS DE TERESA
Cómo comprobar la compresión
ARTÍCULOS RECURSOS
bien optimizadas que las tengas, el tiempo de respuesta suma a todo lo demás.
o 102
COMPARTIR f s h
Cualquier sitio web debería aspirar a 200 ms o menos, que es lo que Google
TOMÁS DE TERESA
recomienda.
ARTÍCULOS RECURSOS
Si el tiempo de respuesta de tu servidor está por encima de 200 ms, debes intentar
reducirlo ante todo. Tienes varias alternativas:
puedes usar una CDN para distribuir la carga en varios servidores alrededor del
Optimizar el servidor – Quizá el servidor hace mal uso de los recursos. Si está
en tu mano, puedes acelerar su respuesta instalando otro software (p.e. NGINX
Esta proporción, conocida como regla de oro del rendimiento web, sugiere que un
método e ciente para mejorar el tiempo de respuesta es reducir los componentes en
Widgets
Insignias sociales
Botones
Imágenes
Iconos
Avatares
prescindir.
o 102
COMPARTIR f s h
Debes ser especialmente crítico con los scripts de terceros, pues son el mayor
TOMÁS DE TERESA ARTÍCULOS RECURSOS
problema de los sitios lentos. Los códigos de seguimiento, publicidad y redes sociales
llaman a recursos externos que a su vez pueden depender de otros recursos,
Pues bien, ciertas técnicas permiten reducir el número de solicitudes HTTP sin tener
que renunciar a ninguna característica:
del área de la imagen sobre la que el usuario hace clic, es conducido a una URL
concreta. Aunque la técnica apenas se usa, es útil para ahorrar solicitudes HTTP
porque evita tener que cargar una imagen por cada URL de destino. Puedes
aprender a con gurar mapas de imágenes aquí.
o 102
COMPARTIR f s h
pequeñas (p.e. iconos) compensa las solicitudes HTTP. Puedes generar imágenes
TOMÁS DE TERESA
en línea mediante la herramienta Base64 Image Converter.
ARTÍCULOS RECURSOS
se combinan en archivos más grandes. Ahora bien, la idea no es juntar los CSS
con los scripts, sino combinar varias hojas de estilo en un solo archivo CSS y
varios scripts en un sólo JavaScript. En el mejor caso, tendrás un único archivo
de cada, aunque no siempre es fácil.
navegador pasa esperando la IP, de ahí que cuantas menos búsquedas se hagan,
menor será la latencia.
realista de cómo las búsquedas de DNS afectan al tiempo de carga, lo más práctico es
usar la herramienta WebPageTest.org.
Quizá te sorprenda.
Cómo
102minimizar las búsquedas de DNS
o COMPARTIR f s h
Cuando la caché del navegador está vacía, el número de búsquedas de DNS equivale
TOMÁS DE TERESA ARTÍCULOS RECURSOS
al número de dominios en la página web. No es así la segunda y sucesivas visitas
debido a que el navegador puede recordar la equivalencia dominio-IP. Por tanto,
descarga en paralelo.
Activar Keep-Alive – Al usar la cabecera HTTP Keep-Alive, la conexión se
mantiene abierta durante la sesión. De este modo, se evita tener que repetir la
Activar Keep-Alive
Antiguamente, cada vez que el navegador solicitaba un recurso al servidor había que
establecer una nueva conexión. Esto retrasaba la carga dado que abrir una conexión
conlleva un tiempo y las páginas suelen hacer varias solicitudes al mismo servidor.
La cabecera HTTP Keep-Alive se ideó para no tener que abrir y cerrar conexiones
o f s h
conexiones, aunque también puedes revisar las cabeceras HTTP y buscar aquella que
102
COMPARTIR
dice Connection: keep-alive.
TOMÁS DE TERESA ARTÍCULOS RECURSOS
.htaccess
Si trabajas con un servidor compartido, tendrás que añadir las siguientes líneas al
archivo .htaccess:
“ <ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>
“ KeepAlive On
MaxKeepAliveRequest 100
KeepAliveTimeout 15
/etc/nginx/nginx.conf):
“ keepalive_disable msie6;
keepalive_requests 100;
keepalive_timeout 75s;
o
consume
f s h
102tiempo. Hasta que el navegador no alcanza el destino de la redirección y el
COMPARTIR
contenido está disponible, el usuario debe esperar frente a una página en blanco.
TOMÁS DE TERESA ARTÍCULOS RECURSOS
Tras activar la extensión recarga la página; verás todos los recursos enlazados y
Como norma general, sustituye los enlaces a páginas o recursos redireccionados por
los destinos nales de la redirección. Esto incluye tanto los enlaces situados en el
contenido visible como los enlaces a componentes en el código de la página.
especial:
debe acceder al dominio vía HTTPS, lo que hace innecesaria la redirección. Aquí
tienes cómo implementarlo en Apache, NGINX y otros servidores. También
de la parte superior; el usuario tendrá que esperar a un contenido que quizá nunca
vea. Muéstrale primero lo que tiene delante y parecerá que tus páginas cargan antes,
Lo cierto es que no hay un método universal. Tienes que revisar tus páginas y
averiguar cómo organizar el código para que los elementos prioritarios se carguen
antes.
primero.
o navegación
102
COMPARTIR
yfun artículo,
s pero h el código HTML carga la barra lateral antes
que el artículo, haz que se cargue el artículo primero.
TOMÁS DE TERESA ARTÍCULOS RECURSOS
Como norma general, asegúrate de que aquello que el navegador muestra a primera
vista se sitúa delante de todo lo demás en el código HTML de la página. Cualquier
Aparte de priorizar los elementos más importantes, puedes lograr que las páginas se
mini cación
En Google saben muy bien que esto genera una mala experiencia, por esa razón
o 102
COMPARTIR f s h
Incrustar el script – Si el código es pequeño, puedes insertarlo directamente en
TOMÁS DE TERESA ARTÍCULOS RECURSOS
el HTML de la página mediante <script type=”text/javascript”>código</script>.
Normalmente el navegador pasará a mostrar la página.
Aplazar la carga – Es la solución más e caz, aunque no vale para todos los
scripts. Consiste en retrasar la carga de JavaScript hasta el momento en que el
En primer lugar, necesitas reunir todos los códigos JavaScript en un mismo archivo.
Coloca uno detrás de otro con ayuda de un editor de texto y guarda el archivo con la
Después, borra los enlaces a los recursos de JavaScript en la página. Por último,
coloca el siguiente código al nal de la página (antes de la etiqueta </body>)
“ <script type=”text/javascript”>
function downloadJSAtOnload() {
document.body.appendChild(element);
}
if (window.addEventListener)
window.attachEvent(“onload”, downloadJSAtOnload);
o 102
COMPARTIR f s h
else window.onload = downloadJSAtOnload;
TOMÁS DE TERESA
</script>
ARTÍCULOS RECURSOS
Lo que hace este código es esperar a que se cargue la página al completo, después
carga el archivo de JavaScript.
Ten en cuenta que el método funciona para cargar JavaScripts que hacen cosas tras la
carga de la página, como medir visitas (el mejor ejemplo es el código de Analytics). Y
aunque puedes intentar con gurarlo para bloques de publicidad o incluso insignias
sociales, normalmente no funcionará si el recurso es necesario para mostrar la
Cuando los CSS se sitúan al inicio del código HTML, ayudan a percibir que la carga se
del contenido, por lo que el usuario debe contemplar una pantalla en blanco durante
más tiempo.
Poner los CSS arriba – Si pones los CSS en primer lugar, se cargarán antes, y
tiempo extra que requiere cada solicitud. Si tu sitio emplea más de una hoja de
o 102
COMPARTIR f s h
estilo, crea un archivo que las englobe. Descargará antes que haciéndolo por
TOMÁS DE TERESA
separado.
ARTÍCULOS RECURSOS
Reducir el tamaño del CSS – Cuanto más pequeño sea archivo antes cargará.
Puedes disminuir su tamaño mediante mini cación (eliminar caracteres e
instrucciones innecesarios).
Evitar @import en CSS – El método @import sirve para llamar a otras hojas de
estilo dentro del CSS, pero no se recomienda porque impide la carga en
código HTML.
Incrustar el CSS – Si la hoja de estilo contiene pocas instrucciones, puedes
Una vez que ha cargado la página, se debe asignar un valor válido al atributo, para lo
Después de que la hoja de estilo se haya cargado, la página será refrescada para
Ten en cuenta que este método puede fallar para algunos navegadores (p.e. Android
4.4 o menor), por lo que no deberías usarlo con hojas de estilo decisivas.
o 102
COMPARTIR f s h
Activar la compresión
TOMÁS DE TERESA ARTÍCULOS RECURSOS
aplicarse a todo tipo de archivos de texto, como HTML estáticos y dinámicos (PHP y
ASPX), CSS y JavaScript.
Para veri car si tu servidor está enviando las páginas comprimidas, usa la
Activar la compresión es sencillo. Tan sólo hay que añadir unas líneas al archivo
Apache 2.x
o AddOutputFilterByType
102
COMPARTIRf s DEFLATE h application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
TOMÁS DE TERESA
AddOutputFilterByType DEFLATE application/x-javascript
ARTÍCULOS RECURSOS
</ifModule>
Apache 1.3
“ <ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include le .(html?|txt|css|js|php|pl)$
</ifModule>
/etc/nginx/nginx.conf):
“ gzip on;
gzip_comp_level 2;
gzip_http_version 1.0;
gzip_proxied any;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_types text/plain text/html text/css application/x-javascript text/xml
o application/xml
102
COMPARTIR f application/xml+rss
s h text/javascript;
Cómo activar la compresión en IIS
TOMÁS DE TERESA ARTÍCULOS RECURSOS
Optimizar imágenes
La optimización de imágenes consiste en reducir el peso de los archivos todo lo
posible sin comprometer la calidad. Dado que las imágenes son uno de los recursos
web más pesados, la técnica puede producir grandes bene cios.
Asigna las dimensiones exactas – Por ejemplo, si tus páginas tienen 600 píxeles
de ancho, usa esa dimensión en tus imágenes. Subir imágenes de 1.000 píxeles
transparencias (p.e. logos). GIF es ideal para imágenes animadas. Evita los
formatos BMP y TIFF a toda costa; no están diseñados para la web y pesan
demasiado.
Descarta los datos de imagen – Tales como Exif, GPS, IPTC y XMP; ocupan
espacio y no tienen ninguna utilidad en la web. Si tu software de edición de
imágenes carece de una opción para suprimir estos datos, puedes librarte de
que uses para guardar tus imágenes (p.e. el nivel 80 de GIMP nada tiene que ver
con el de Photoshop).
Compressor.io
Kraken.io
JPEGmini
ImageOptim
TinyPNG
PNGOUTWin
Por otro lado, puedes instalar el plugin WP Smush.it si usas WordPress. Comprimirá
automáticamente las imágenes que subas a la biblioteca sin que éstas pierdan calidad.
“ En términos de carga, más pequeño es mejor y hará que tus páginas sean
más veloces.
“ Entérminosdecarga,máspequeñoesmejoryharáquetuspáginasseanmásveloces.
La segunda versión es más pequeña, ¿verdad? En esto se basa la mini cación, solo
o
que a mayor
102 escala.
COMPARTIR f s h
Tipos de minificación
TOMÁS DE TERESA ARTÍCULOS RECURSOS
saltos de línea y sangrías para reducir el tamaño del archivo sobre un 5%.
sólo con las instrucciones que vas a usar puede reducir el tamaño del archivo
signi cativamente.
Lo ideal es combinar los dos tipos de mini cación comentados. Para ello, sigue los
siguientes pasos:
1. Abre tus archivos CSS con un editor de texto, como el bloc de notas o
Notepad++
2. Busca con guraciones de color que no vayas a usar y bórralas
3. Pasa los archivos obtenidos en el paso anterior por la herramienta CSS Mini er
4. Pasa tus archivos JavaScript por la herramienta JS Compress
Por supuesto, antes de modi car cualquier archivo asegúrate de guardar una copia
de seguridad.
o mediante
102 la f
COMPARTIR scomandos.
línea de h
Closure compiler – El compilador de JavaScript de Google. Analiza el script,
TOMÁS DE TERESA ARTÍCULOS RECURSOS
elimina el código muerto, reescribe el resto y lo minimiza. Al igual que YUI
Compressor funciona por línea de comandos.
“ <IfModule mod_expires.c>
ExpiresActive On
</IfModule>
o 102
COMPARTIR f s h
Este código asigna un año de memoria para imágenes y un mes para archivos de
TOMÁS DE TERESA ARTÍCULOS RECURSOS
texto, PDF y JavaScript. Para ampliarlo o reducirlo sólo tienes que cambiar el valor
asignado y el periodo (year, month, days), aunque este código ya viene optimizado
La caché en NGINX se activa añadiendo las siguientes líneas dentro del bloque server,
en el archivo de con guración (normalmente en /etc/nginx/nginx.conf):
}
location ~* \.(css|js|pdf)$ {
expires 30d;
reload).
Para que la caché funcione, el servidor tiene que decirle al navegador qué archivos
debe recordar y por cuánto tiempo. Esto se comunica mediante unos parámetros
llamados cabeceras HTTP.
o 102
COMPARTIR f s h
“ Expires: fecha_de_caducidad
TOMÁS DE TERESA ARTÍCULOS RECURSOS
Cache-control: max-age=tiempo_en_segundos
en cada visita. Esto incluye acceder a la base de datos y añadir cada componente al
documento HTML nal.
Cachear las páginas dinámicas consiste en generar una página estática por cada
automáticamente:
WordPress – Los plugins más conocidos son W3 Total Cache (el más completo),
WP Super Cache (más sencillo) y ZenCache (el más sencillo). Aquí tienes una
Drupal – Al igual que Joomla, Drupal trae una opción para con gurar la caché,
aunque hay también módulos, como Boost.
Prestashop – Trae de serie varios parámetros para con gurar la caché: Smarty,
CCC y Cache.
Magento – Dispone de varias soluciones premium, como Full Page Cache o
Nigrogento.
o 102
COMPARTIR f s h
Considera que antes de instalar cualquier plugin de caché, debes asegurarte de que
TOMÁS DE TERESA ARTÍCULOS RECURSOS
sea compatible con otros complementos que tengas instalados, ya que pueden
surgir con ictos.
Además de las soluciones propias de cada CMS, existen alternativas para ser
empleadas en multitud de sitios dinámicos:
problema ya que distribuye los archivos estáticos (imágenes, CSS y JS) en múltiples
servidores alrededor del mundo. Así, cuando un visitante accede a una página,
descarga contenido del servidor más cercano, lo que reduce el tiempo de espera.
Aceleran la carga al enviar una parte del contenido web a través del servidor
más próximo al usuario en términos de latencia
o sobre
102 la redf
COMPARTIR global s h
Ayudan a paralelizar la descarga de componentes en el navegador, reduciendo
TOMÁS DE TERESA
aún más el tiempo de espera
ARTÍCULOS RECURSOS
Son poco prácticas para sitios cuyo trá co proviene del mismo país o región
Añaden más complejidad a la web, con todo lo que eso conlleva de cara al
mantenimiento
Pueden causar problemas de contenido duplicado al ubicar los mismos archivos
en múltiples URL
Normalmente cachean objetos estáticos, no páginas enteras
Implican un gasto adicional
Amazon CloudFront – Red global con servidores en América del norte y del sur,
Europa, Asia y Australia. Funciona a demanda, sin planes ni contratos.
MaxCDN – Además de ofrecer buenos planes, ha desarrollado plugins par los
Puedes encontrar una lista completa de proveedores e información sobre cómo elegir
al más adecuado en CDN Planet.
desde otro dominio (p.e. cloudfront.net), conviene que con gures un registro
CNAME junto con tus DNS para que el acceso se haga a través de un subdominio
tuyo (p.e. cdn.example.com).
3. Actualizar los enlaces – Para que los visitantes reciban el contenido de la CDN,
tendrás que cambiar las URL de archivos estáticos en tu hosting por su
equivalente en los servidores de la red. Esto puede parecer una tarea ingente,
Pingdom Tools
GTmetrix
WebPageTest
o 102
COMPARTIR f 41 s 28 h 16 j 17
o 102
COMPARTIR f s h
LODE
TOMÁS MÁS VISTO
TERESA ARTÍCULOS RECURSOS
Google
Las 7 Claves del SEO para Imágenes
Jose dice
27 noviembre, 2016 en 14:37
Primero hay que dividir todas las imágenes grandes con Photoshop en dos o más
imágenes de menos de 256Kb cada una (si tienen más tamaño el truco no funciona).
Después hay que instalar la versión gratuita de VCLServer para cachear todas estas
imágenes (se descarga desde http://www.vclserver.com). Como VCLServer no sabe
que las imágenes son trozos de una imagen más grande lo cachea todo, así nos
saltamos el límite de 256Kb de la versión gratuita y el resultado es el mismo que si se
usa la versión de pago.
o 102
COMPARTIR f s h
Tengo un blog con cientos de fotos en un servidor en casa y recibo más de 25.000
TOMÁS DE TERESA ARTÍCULOS RECURSOS
visitas diarias sin saturaciones. Mi conexión es ADSL de 1Mbps de subida y el servidor
está conectado al router por wi , aún así va genial.
Aitor dice
17 noviembre, 2016 en 10:47
keep-alive pero en la herramienta que dejastes para comprobarlo pone que no hay
keep-alive por lo tanto no se que sucede, tengo un cms wordpress y estoy en servidor
compartido
Un saludo
Antonio dice
11 agosto, 2016 en 01:48
o 102
COMPARTIR f s h
Saludos Tomás,
TOMÁS DE TERESA
otra guía muy completa que encuentro en tu web enhorabuena!
ARTÍCULOS RECURSOS
strings from static resources y me sale un listado de urls con ese problema.
Hola Antonio
sirve para que los test de velocidad no te digan que tienes que quitarlos. Así que,
a menos que no tengas otras mejoras más sustanciales en la lista y tampoco
planees modi car los recursos, vale que lo implementes. Eso sí, no esperes una
Un saludo
Max dice
9 junio, 2016 en 22:20
Abrazo!
Max
Hola Max
La carga asíncrona de CSS puedes hacerla mediante un script. Aquí tienes cómo:
http://blog.openalfa.com/como-reducir-el-tiempo-de-carga-de-una-pagina-
web-con-css-asincrono
Un saludo
SaulCM dice
9 febrero, 2016 en 23:48
Me ha encantado. Es muy completo y creo que da más que nociones básicas para
algunos no me afectan.
También he leido que existen scripts que ayudan a mejorar la velocidad. ¿Realmente
estos scripts funcionan?
Gracias.
Saludos
Pedro dice
2 febrero, 2016 en 17:19
Lo vi en Ciudad Blogger.
Un saludo.
Otra cosa es que el Lazy Loading puede no funcionar bien para sitios
de un sola página. Si los usuarios acceden directamente a una
sección, es posible que tengan que esperar a que la imagen cargue.
Saludos
Pedro dice
8 febrero, 2016 en 09:49
Hola Tomás:
temas de StudioPress.com son los mejores. ¿Cuál plantilla crees que es la mejor o si
crees que este punto es irrelevante?
Gracias.
sitio (Parallax Pro), aunque te recomiendo cualquiera que esté en HTML5 y sea
Responsive.
Saludos
Johanna dice
26 julio, 2015 en 03:11
Excelente post! y muy completo, era precisamente lo que estaba buscando, y lo mejor
es que tocas cada punto en detalle.
conocía algunos puntos tratados como el Keep-Alive , en pocos pasos, logre bajar 0,5
con la correcta con guración, según el test de Gtmetrix, te felicito por el articulo,
saludos.
o Tomás f
102 de Teresa
COMPARTIR s
dice
23 julio, 2015 en 12:42
h
Juan Carlos, me alegra saber que te ha servido para mejorar el rendimiento de tu
TOMÁS DE TERESA
sitio. ¡Estupendo!
ARTÍCULOS RECURSOS
Ricard dice
25 mayo, 2015 en 00:13
Hola Tomás,
Para los que somos emprendedores y estamos a las puertas de un proyecto de cierta
envergadura es de agradecer encontrar información tan bien explicada y organizada.
incluyan datos de imagen como Exif, GPS, etc. Con ello se gana espacio, ¿pero
perdemos SEO?
sólido?
Muchas gracias de nuevo por tu valiosa aportación a todos los que cada día
aprendemos más detalles sobre algo tan importante como el SEO.
Saludos,
Ricard
o Tomás
102 f sdice h
de Teresa
COMPARTIR
25 mayo, 2015 en 09:44
TOMÁS DE TERESA ARTÍCULOS RECURSOS
En estos momentos Google no usa los datos Exif, aunque más adelante puede
que lo haga, quién sabe. Lo que tienes que tener claro es que esos datos no van
a mejorar la visibilidad de tus imágenes de por sí.
Así que, como ocurre en cualquier decisión que afecte a la velocidad, tendrás
que valorar si los datos Exif son útiles a tus usuarios y si incluirlos compensaría
el retraso que añaden a la carga.
Ricard dice
25 mayo, 2015 en 23:49
Me da la sensación que más que datos Exif será más importante (por lo
menos en mi caso) introducir tags/etiquetas importantes que hagan
Saludos,
Ricard
o 102
COMPARTIR f s h
Tomás de Teresa dice
27 mayo, 2015 en 08:25
TOMÁS DE TERESA ARTÍCULOS RECURSOS
Suerte
Hola Rafa
Antonio dice
12 mayo, 2015 en 10:50
¡Vaya artículo más completo! En realidad no me ha dado tiempo a leerlo entero, pero
lo acabo de imprimir y me lo voy a leer con calma y tratar de sacarle todo el partido
inaki dice
12 mayo, 2015 en 09:15
qué de acuerdo estoy con tu punto de vista. quizá la herramienta menos conocida y
más able es la de WebpPageTest.org
desde mi punto de vista utilizar las CDN’s para cachear lógica de URL’s es una fuente
de problemas invisibles. aunque los servicios técnicos de esos proveedore son muy
mediante una expresión regular del user agent y va francamente bien en rendimiento.
o 102
COMPARTIR f s h
Yo añadiría una recomendación general: simpli ca, nada carga más rápido que un
TOMÁS DE TERESA
HTML plano.
ARTÍCULOS RECURSOS
o 102
COMPARTIR f s h