Jaké jsou způsoby optimalizace pro snížení objemu dat přenášených mezi frontendem a serverem?
sobes.tech AI
Odpověď od AI
-
Data komprese: Použití algoritmů komprese (gzip, Brotli) na serveru před odesláním dat klientovi.
-
Minifikace a obfuskace: Odstranění zbytečných znaků (mezery, řádkové přerušení) a přejmenování proměnných v JS, CSS, HTML souborech při sestavení projektu.
-
Líné načítání (Lazy Loading): Načítání zdrojů (obrázků, komponent, modulů) pouze tehdy, když jsou potřeba, nikoli při počátečním načtení stránky.
-
Tree Shaking (odstranění nepoužívaného kódu): Nástroje pro sestavení (Webpack, Rollup) mohou analyzovat závislosti a vyloučit z výsledného balíčku nepoužívaný kód.
-
Optimalizace obrázků:
- Použití moderních formátů (WebP, AVIF).
- Komprese s nebo bez ztráty kvality.
- Responzivní obrázky (
<picture>nebosrcset). - Lazy načítání obrázků (
loading="lazy").
-
Caching:
- Caching na straně prohlížeče (HTTP hlavičky cache).
- Caching dat API na frontendu (například pomocí knihoven pro správu stavu).
-
Paginace a nekonečné rolování: Načítání dat po částech místo načítání celého datasetu.
-
GraphQL místo REST: Umožňuje klientovi požadovat pouze ta pole, která potřebuje, čímž se vyhýbá nadbytečným datům.
-
Formát dat: Použití kompaktnějších formátů pro výměnu dat, jako jsou Protocol Buffers nebo MessagePack, místo XML nebo nadbytečného JSON.
-
Snížení počtu HTTP požadavků: Sloučení souborů (CSS, JS), použití CSS spriteů.
-
Server-side rendering (SSR) / Generování statických stránek (SSG): Snížení objemu JS potřebného pro počáteční zobrazení díky renderování na serveru.
-
Komprese požadavků (Request Compression): Zřídka používané, ale možné komprimovat tělo POST požadavků.
// Příklad lazy loading komponenty v React s React.lazy a Suspense
import React, { Suspense } from 'react';
const LazyComponent = React.lazy(() => import('./LazyComponent'));
function App() {
return (
<div>
<Suspense fallback={<div>Načítání...</div>}>
<LazyComponent />
</Suspense>
</div>
);
}
<!-- Příklad adaptivního obrázku -->
<picture>
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="Popis obrázku">
</picture>