Koji su načini optimizacije za smanjenje obima podataka koji se prenose između frontenda i servera?
sobes.tech АИ
Одговор од АИ
-
Сжимање података: Коришћење алгоритама компресије (gzip, Brotli) на серверу пре слања података клијенту.
-
Минификација и обфускација: Уклањање вишка симбола (размаци, преломи редова) и преименовање променљивих у JS, CSS, HTML фајловима током изградње пројекта.
-
Ленијско учитавање (Lazy Loading): Учитавање ресурса (слика, компоненти, модула) само када су потребни, а не при првом учитавању странице.
-
Уклањање неиспотребног кода (Tree Shaking): Инструменти за изградњу (Webpack, Rollup) могу анализирати зависности и искључити из резултујућег бандла неиспотребни код.
-
Оптимизација слика:
- Коришћење савремених формата (WebP, AVIF).
- Компресија са губицима или без губитака.
- Адаптивне слике (
<picture>илиsrcset). - Ленијско учитавање слика (
loading="lazy").
-
Кеширање:
- Кеширање на страни прегледача (HTTP заглавља кеширања).
- Кеширање података API на фронтенду (нпр. помоћу библиотека за управљање стањем).
-
Пагинација и бесконачно скроловање: Учитавање података у деловима уместо целокупног скупа података.
-
GraphQL уместо REST: Омогућава клијенту да тражи само она поља која му треба, избегавајући вишак података.
-
Формат података: Коришћење компактнијих формата за размену података, као што су Protocol Buffers или MessagePack, уместо XML или вишеструког JSON.
-
Смањење броја HTTP захтева: Уједињење фајлова (CSS, JS), коришћење CSS спрајтова.
-
Серверски рендеринг (SSR) / Генерација статичких сајтова (SSG): Смањење обима JS потребног за прво приказивање, захваљујући рендерингу на серверу.
-
Сжатие захтева (Request Compression): Ретко се користи, али је могуће компримовати тело POST захтева.
// Пример ленивог учитавања компоненти у React-у помоћу React.lazy и Suspense
import React, { Suspense } from 'react';
const LazyComponent = React.lazy(() => import('./LazyComponent'));
function App() {
return (
<div>
<Suspense fallback={<div>Учитавање...</div>}>
<LazyComponent />
</Suspense>
</div>
);
}
<!-- Пример адаптивне слике -->
<picture>
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="Опис слике">
</picture>