Full-Stack Project Development

Build a complete full-stack application from scratch including frontend, backend, database, authentication, and deployment.

advanced Backend Development 10 hours

Chapter 12: Performance Optimization

Chapter 12 of 15

Chapter 12: Performance Optimization

12.1 Optimization Techniques

Performance optimization improves user experience and reduces server costs.

Frontend Optimization:

  • Code splitting and lazy loading
  • Image optimization and lazy loading
  • Minification and compression
  • CDN for static assets
  • Service workers for caching
// React code splitting
const LazyComponent = React.lazy(() => import('./LazyComponent'));

// Image optimization
<img
    src={imageSrc}
    loading="lazy"
    alt="Description"
    srcSet={`${imageSrc} 1x, ${imageSrc2x} 2x`}
/>

Backend Optimization:

  • Database query optimization
  • Caching frequently accessed data
  • Connection pooling
  • Compression middleware
  • Load balancing
// Compression
const compression = require('compression');
app.use(compression());

// Caching
const cache = require('memory-cache');
function getCachedData(key) {
    let data = cache.get(key);
    if (!data) {
        data = fetchFromDatabase(key);
        cache.put(key, data, 60000); // Cache for 1 minute
    }
    return data;
}

12.2 Database Query Optimization

// Use indexes
CREATE INDEX idx_user_email ON users(email);

// Avoid N+1 queries
// Bad
const users = await User.findAll();
for (const user of users) {
    const posts = await Post.findAll({ where: { userId: user.id } });
}

// Good - Use joins
const users = await User.findAll({
    include: [{ model: Post }]
});