← Назад к вопросам

Какие знаешь способы оптимизации загрузки страницы?

2.0 Middle🔥 211 комментариев
#Оптимизация и производительность

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Оптимизация загрузки страницы

Оптимизация производительности — критичный навык. Расскажу о проверенных способах, которые реально работают.

1. Code Splitting

Разделение кода на чанки для ленивой загрузки:

// Next.js
import dynamic from "next/dynamic";
const HeavyComponent = dynamic(() => import("./Heavy"), {
  loading: () => <Skeleton />,
  ssr: false
});

// React.lazy
const OtherComponent = React.lazy(() => import("./OtherComponent"));

Результат: Initial JS bundle уменьшается на 40-60%.

2. Image Optimization

Изображения часто виноваты в медленной загрузке:

import Image from "next/image";
<Image 
  src="/photo.jpg" 
  width={800} 
  height={600} 
  quality={75}
  placeholder="blur"
  loading="lazy"
/>
  • WebP формат вместо JPG/PNG (30-35% экономии)
  • Responsive images с srcset
  • Lazy loading по умолчанию
  • Blur placeholder для улучшения UX

3. Browser Caching

Правильные Cache-Control заголовки:

Cache-Control: max-age=3600, public
Cache-Control: max-age=31536000, immutable
Cache-Control: max-age=0, must-revalidate

4. Minification и Compression

Gzip (все браузеры) или Brotli (лучше, 60-70% экономии):

Content-Encoding: gzip
Content-Encoding: br

5. Critical CSS

Выделение критичных стилей для above-the-fold:

<style>
  .hero { display: flex; background: blue; }
</style>
<link rel="preload" href="style.css" as="style">

6. Performance Monitoring

Web Vitals для измерения:

import { getLCP, getFID, getCLS } from 'web-vitals';
getLCP(console.log);  // Largest Contentful Paint
getFID(console.log);  // First Input Delay
getCLS(console.log);  // Cumulative Layout Shift

Цели: LCP < 2.5s, FID < 100ms, CLS < 0.1

7. Resource Hints

<link rel="dns-prefetch" href="//api.example.com">
<link rel="preconnect" href="//cdn.example.com">
<link rel="prefetch" href="/next-page.js">
<link rel="preload" href="/font.woff2" as="font" crossorigin>

8. Оптимизация бандла

  • Tree-shaking: используй именованные импорты
  • Bundle Analyzer для анализа размера
  • Динамический импорт тяжелых библиотек

9. CDN и Static Hosting

  • Edge caching для максимальной скорости
  • Vercel, Netlify, Cloudflare Pages уже оптимизированы

10. Database Query Optimization

ISR (Incremental Static Regeneration) в Next.js:

export const revalidate = 3600;

Результат

  • 50-70% уменьшение JS
  • 60-80% уменьшение изображений
  • 2-3x улучшение LCP

Начни с анализа в Chrome DevTools Lighthouse и WebPageTest, фокусируйся на узких местах.