This article is currently available in Spanish only. English translation coming soon!
Portafolio E-commerce Arquitectura CMS
Rendimiento: checklist en 2025
Guía breve y accionable sobre rendimiento para aplicar en 2025.
Rendimiento: checklist en 2025
Checklist completa de optimización de rendimiento web para 2025. Asegúrate de que tu sitio sea rápido, eficiente y ofrezca una excelente experiencia de usuario.
Por qué el rendimiento importa
El rendimiento web impacta directamente en:
- Conversiones: Cada segundo de retraso reduce conversiones en 7%
- SEO: Google usa Core Web Vitals como factor de ranking
- Experiencia de usuario: 53% de usuarios abandona sitios que tardan más de 3 segundos
- Costos: Menor uso de ancho de banda = menores costos de hosting
Checklist de Rendimiento Web 2025
1. Optimización de Imágenes
<!-- ✅ Imagen optimizada -->
<img
src="producto.webp"
srcset="producto-400.webp 400w, producto-800.webp 800w"
sizes="(max-width: 600px) 400px, 800px"
alt="Producto destacado"
loading="lazy"
width="800"
height="600">
<!-- ❌ Imagen sin optimizar -->
<img src="producto.jpg" alt="Producto">
Checklist:
- Imágenes convertidas a WebP o AVIF
- Lazy loading implementado
- Dimensiones especificadas (width/height)
- Responsive images con srcset
- Compresión aplicada (TinyPNG, ImageOptim)
- CDN para entrega de imágenes
2. JavaScript y CSS
// ✅ Code splitting
const LazyComponent = lazy(() => import('./LazyComponent'));
// ✅ Tree shaking
import { specificFunction } from './utils';
// ❌ Importar toda la librería
import * as _ from 'lodash';
Checklist:
- JavaScript minificado y comprimido
- CSS minificado
- Code splitting implementado
- Tree shaking configurado
- Eliminado código no utilizado
- Bundles optimizados (chunks pequeños)
- Preload para recursos críticos
- Defer/async en scripts no críticos
3. Caché y Almacenamiento
// Service Worker para caché
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
return response || fetch(event.request);
})
);
});
Checklist:
- Headers de caché configurados
- Service Worker implementado (PWA)
- Browser caching activado
- CDN configurado
- Cache-Control headers optimizados
- ETags implementados
4. Core Web Vitals
Largest Contentful Paint (LCP)
Objetivo: < 2.5 segundos
<!-- Preload de recursos críticos -->
<link rel="preload" href="font.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="hero-image.webp" as="image">
<!-- DNS prefetch -->
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
Checklist:
- LCP < 2.5s
- Recursos críticos con preload
- Servidor optimizado (TTFB < 600ms)
- Imágenes hero optimizadas
- Fuentes web optimizadas
First Input Delay (FID)
Objetivo: < 100ms
// ✅ Dividir tareas pesadas
setTimeout(() => {
processHeavyTask();
}, 0);
// ✅ Web Workers
const worker = new Worker('heavy-task.js');
worker.postMessage(data);
Checklist:
- FID < 100ms
- JavaScript no bloqueante
- Tareas pesadas en Web Workers
- Event listeners optimizados
- Menos JavaScript de terceros
Cumulative Layout Shift (CLS)
Objetivo: < 0.1
<!-- ✅ Dimensiones especificadas -->
<img src="banner.jpg" width="1200" height="600" alt="Banner">
<!-- ✅ Reservar espacio para contenido dinámico -->
<div style="min-height: 300px;">
<!-- Contenido que se carga después -->
</div>
Checklist:
- CLS < 0.1
- Dimensiones de imágenes especificadas
- Espacio reservado para anuncios
- Fuentes con font-display: swap
- Evitar insertar contenido arriba del fold
5. Optimización de Fuentes
/* ✅ Font display optimizado */
@font-face {
font-family: 'CustomFont';
src: url('font.woff2') format('woff2');
font-display: swap; /* Muestra texto con fallback mientras carga */
}
/* ✅ Preload de fuentes críticas */
<link rel="preload" href="font.woff2" as="font" type="font/woff2" crossorigin>
Checklist:
- Fuentes en formato WOFF2
- font-display: swap configurado
- Subset de fuentes (solo caracteres necesarios)
- Preload de fuentes críticas
- Fallback fonts definidas
6. Optimización de Red
// ✅ HTTP/2 Server Push
// Configurado en servidor
// ✅ Compression (gzip/brotli)
// Habilitado en servidor
// ✅ Resource Hints
<link rel="preconnect" href="https://api.example.com">
<link rel="dns-prefetch" href="https://cdn.example.com">
Checklist:
- HTTP/2 o HTTP/3 habilitado
- Compresión gzip/brotli activada
- Preconnect para dominios externos
- DNS prefetch para recursos
- Conexiones persistentes
7. Base de Datos y Backend
Checklist:
- Queries optimizadas (índices)
- Caché de base de datos
- API responses optimizadas
- Paginación implementada
- Lazy loading de datos
- CDN para assets estáticos
8. Monitoreo y Métricas
// Web Vitals tracking
import { getCLS, getFID, getLCP } from 'web-vitals';
getCLS(console.log);
getFID(console.log);
getLCP(console.log);
Checklist:
- Google Analytics 4 configurado
- Core Web Vitals trackeados
- Real User Monitoring (RUM)
- Alertas de rendimiento configuradas
- Lighthouse CI en pipeline
- PageSpeed Insights monitoreado
Herramientas de Medición
Automáticas
- Lighthouse - Auditoría completa
- PageSpeed Insights - Análisis de rendimiento
- WebPageTest - Testing avanzado
- Chrome DevTools - Performance profiling
Monitoreo Continuo
- Google Search Console - Core Web Vitals
- New Relic - APM y RUM
- Datadog - Monitoreo de infraestructura
- Sentry - Performance monitoring
Checklist Rápida de Implementación
Prioridad Alta (esta semana):
- Optimizar imágenes (WebP, lazy loading)
- Minificar CSS y JavaScript
- Configurar caché del navegador
- Especificar dimensiones de imágenes
- Preload recursos críticos
Prioridad Media (este mes):
- Implementar code splitting
- Optimizar fuentes web
- Configurar CDN
- Mejorar TTFB del servidor
- Implementar Service Worker
Prioridad Baja (próximos meses):
- HTTP/3
- Advanced caching strategies
- Web Workers para tareas pesadas
- Optimización avanzada de base de datos
Qué hacer ahora
- Ejecuta Lighthouse y anota los 5 problemas más críticos de rendimiento
- Optimiza imágenes y recursos estáticos esta semana (mayor impacto con menor esfuerzo)
- Mide el progreso con GA4 y Search Console para validar mejoras en Core Web Vitals, tiempo de carga y tasa de rebote