Sobes.tech
Middle+

What are the methods of optimization to reduce the amount of data transmitted between the frontend and the server?

sobes.tech AI

Answer from AI

  • Data Compression: Using compression algorithms (gzip, Brotli) on the server before sending data to the client.

  • Minification and Obfuscation: Removing unnecessary characters (spaces, line breaks) and renaming variables in JS, CSS, HTML files during project build.

  • Lazy Loading: Loading resources (images, components, modules) only when needed, not during the initial page load.

  • Tree Shaking: Build tools (Webpack, Rollup) can analyze dependencies and exclude unused code from the resulting bundle.

  • Image Optimization:

    • Using modern formats (WebP, AVIF).
    • Lossy or lossless compression.
    • Responsive images (<picture> or srcset).
    • Lazy loading images (loading="lazy").
  • Caching:

    • Browser-side caching (HTTP cache headers).
    • API data caching on the frontend (e.g., using state management libraries).
  • Pagination and Infinite Scrolling: Loading data in chunks instead of loading the entire dataset at once.

  • GraphQL instead of REST: Allows clients to request only the fields they need, avoiding redundant data.

  • Data Format: Using more compact data formats like Protocol Buffers or MessagePack instead of XML or verbose JSON.

  • Reducing HTTP Requests: Combining files (CSS, JS), using CSS sprites.

  • Server-Side Rendering (SSR) / Static Site Generation (SSG): Reducing the amount of JS needed for initial rendering by rendering on the server.

  • Request Compression: Rarely used, but possible to compress POST request bodies.

// Example of lazy loading a React component using React.lazy and Suspense
import React, { Suspense } from 'react';

const LazyComponent = React.lazy(() => import('./LazyComponent'));

function App() {
  return (
    <div>
      <Suspense fallback={<div>Loading...</div>}>
        <LazyComponent />
      </Suspense>
    </div>
  );
}
<!-- Example of a responsive image -->
<picture>
  <source srcset="image.webp" type="image/webp">
  <img src="image.jpg" alt="Image description">
</picture>