Introduction
Web performance optimization is crucial for user experience and business success. According to Google’s Web Vitals, performance directly impacts user engagement and conversion rates.
Modern web applications must balance rich features with fast loading times. The Chrome Lighthouse documentation provides comprehensive metrics for measuring and optimizing performance.
Core Web Vitals
Understanding and optimizing Core Web Vitals is essential. Learn more from web.dev’s Core Web Vitals guide.
LCP (Largest Contentful Paint)
Measures loading performance. Should occur within 2.5 seconds of when the page first starts loading.
FID (First Input Delay)
Measures interactivity. Pages should have a FID of 100 milliseconds or less.
CLS (Cumulative Layout Shift)
Measures visual stability. Pages should maintain a CLS of 0.1 or less.
// Performance Monitoring Example
// Install web-vitals library
npm install web-vitals
// Implementation
import {onCLS, onFID, onLCP} from 'web-vitals';
function sendToAnalytics({name, delta, id}) {
// Send metrics to your analytics service
gtag('event', name, {
value: delta,
metric_id: id,
});
}
onCLS(sendToAnalytics);
onFID(sendToAnalytics);
onLCP(sendToAnalytics);
Image Optimization
Optimizing images is crucial for web performance. The web.dev image optimization guide provides comprehensive techniques.
// Modern Image Loading Example
<picture>
<source
srcset="image-large.webp 1024w,
image-medium.webp 640w,
image-small.webp 320w"
sizes="(max-width: 320px) 280px,
(max-width: 640px) 580px,
1024px"
type="image/webp">
<img
src="image-fallback.jpg"
loading="lazy"
alt="Optimized image"
width="800"
height="600">
</picture>
// Image Optimization with Sharp
const sharp = require('sharp');
sharp('input.jpg')
.resize(800, 600)
.webp({ quality: 80 })
.toFile('output.webp')
.then(info => { console.log(info); })
.catch(err => { console.error(err); });
JavaScript Performance
Optimizing JavaScript execution is critical. Learn more from Chrome DevTools Performance.
// Code Splitting Example
// webpack.config.js
module.exports = {
entry: './src/index.js',
output: {
filename: '[name].[contenthash].js',
chunkFilename: '[name].[contenthash].js',
},
optimization: {
splitChunks: {
chunks: 'all',
maxInitialRequests: Infinity,
minSize: 0,
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name(module) {
const packageName = module.context.match(
/[\\/]node_modules[\\/](.*?)([\\/]|$)/
)[1];
return `vendor.${packageName.replace('@', '')}`;
},
},
},
},
},
};
// Dynamic Import Example
const MyComponent = React.lazy(() => import('./MyComponent'));
function App() {
return (
<Suspense fallback={<Loading />}>
<MyComponent />
</Suspense>
);
}
Caching Strategies
Implementing effective caching improves performance. The web.dev caching guide explains various strategies.
// Service Worker Caching Example
// sw.js
const CACHE_NAME = 'v1';
const URLS_TO_CACHE = [
'/',
'/styles/main.css',
'/scripts/main.js',
'/images/logo.png'
];
self.addEventListener('install', event => {
event.waitUntil(
caches.open(CACHE_NAME)
.then(cache => cache.addAll(URLS_TO_CACHE))
);
});
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request)
.then(response => {
if (response) {
return response;
}
return fetch(event.request)
.then(response => {
if (!response || response.status !== 200) {
return response;
}
const responseToCache = response.clone();
caches.open(CACHE_NAME)
.then(cache => {
cache.put(event.request, responseToCache);
});
return response;
});
})
);
});
Resource Hints
Using resource hints improves page load performance. Learn more from web.dev’s resource hints guide.
<!-- Resource Hints Example -->
<head>
<!-- Preconnect to critical third-party origins -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://analytics.example.com">
<!-- Prefetch for future navigation -->
<link rel="prefetch" href="/articles/next-page.html">
<!-- Preload critical resources -->
<link rel="preload" href="/fonts/main.woff2" as="font" crossorigin>
<link rel="preload" href="/images/hero.webp" as="image">
</head>
Best Practices
Follow performance best practices for optimal results. web.dev’s Fast load times guide provides comprehensive recommendations.
Learning Resources
Deepen your performance optimization knowledge with these resources: Frontend Masters’ Web Performance, Smashing Magazine’s Performance Guide, and Google’s Performance Guide.