IHS Strategic
Tüm Blog Yazıları
HowTo09 Eylül 2026•2 dk okuma

Next.js ve Server Components ile Yüksek Performanslı Web Sitesi Geliştirme

Next.js ve Server Components ile Yüksek Performanslı Web Sitesi Geliştirme

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

{ "title": "Next.js ve Server Components Rehberi: Modern Web Sitelerinde Maksimum Performans", "slug": "nextjs-server-components-yuksek-performans-rehberi", "summary": "Next.js App Router ve React Server Components ile sıfır istemci JavaScript yükü ve üstün Core Web Vitals skorları elde etme adımları.", "content": "

Modern Web Geliştirmede Server Components Paradigması

Modern web mimarilerinde istemci taraflı JavaScript yükü doğrudan performansı ve SEO skorlarını düşürür. React Server Components (RSC), bileşenleri doğrudan sunucuda render ederek istemciye sadece hazır HTML ve minimal JSON akışı gönderir. Bu yaklaşım, bir dijital ajans için müşteri projelerinde en yüksek Core Web Vitals değerlerini yakalamanın temel standardıdır.

Adım 1: Server ve Client Component Ayrımını Netleştirin

Varsayılan olarak Next.js App Router içindeki tüm bileşenler Server Component'tir. Yalnızca kullanıcı etkileşimi (state, effect, event listener) gerektiren yerlerde istemci sınırını belirleyin.

  • Server Component: Veritabanı sorguları, API anahtarı gerektiren işlemler, ağır kütüphaneler. Sıfır istemci JS boyutu.
  • Client Component: useState, useEffect, onClick, tarayıcı API'leri. Dosya başına 'use client' direktifi ekleyin.
İpucu: 'use client' direktifini ağacın en altındaki yaprak bileşenlere (leaf components) taşıyın. Ağacın kökünde tanımlamak tüm alt bileşenleri istemci paketine dahil eder.

Adım 2: Doğrudan Veri Çekme ve Paralel İstekler

Server Components içinde async/await doğrudan kullanılabilir. useEffect ve fetch kombinasyonu yerine doğrudan sunucuda veri çekin:

async function ProjectList() {
  const projects = await db.project.findMany();
  return (
    <ul>
      {projects.map(p => <li key={p.id}>{p.name}</li>)}
    </ul>
  );
}

Şelale (waterfall) veri isteklerini önlemek için bağımsız verileri Promise.all ile paralel çekin.

Adım 3: Streaming ve Suspense ile Arayüz Bloklamalarını Önleyin

Yavaş yanıt veren API çağrıları tüm sayfa renderını durdurmamalıdır. React Suspense kullanarak hızlı kısımları anında sunun, yavaş kısımları akış (streaming) halinde tamamlayın.

import { Suspense } from 'react';
import FastHeader from './FastHeader';
import SlowAnalytics from './SlowAnalytics';
import Skeleton from './Skeleton';

export default function Page() {
  return (
    <main>
      <FastHeader />
      <Suspense fallback={<Skeleton />}>
        <SlowAnalytics />
      </Suspense>
    </main>
  );
}

Adım 4: Dijital Ajans Projeleri İçin Core Web Vitals Optimizasyonu

Sektörel trendler, sayfa hızının dönüşüm oranlarına doğrudan etki ettiğini gösterir. Aşağıdaki adımlarla metrikleri sabitleyin:

  • LCP (Largest Contentful Paint): Kritik görsellerde next/image bileşeni ve priority özniteliğini zorunlu kılın.
  • CLS (Cumulative Layout Shift): Dinamik içerik alanlarına sabit container boyutları tanımlayın.
  • INP (Interaction to Next Paint): Ağır mantıkları Server Actions ve Web Worker yapılarına taşıyın.

Adım 5: Bundle Boyutunu Sıfıra Yaklaştırın

Büyük kütüphaneleri (örneğin: markdown parser, date-fns) sadece Server Component içinde import edin. Bu kütüphaneler istemci bundle dosyasına eklenmez, tarayıcıya sadece üretilen saf HTML iletilir.

", "schema_type": "HowTo", "suggested_tags": [ "rehber", "trendler", "dijital ajans", "modern web", "nextjs", "server components", "web performance" ] }