0Pricing
Frontend Academy · Pelajaran

SSG SSR dan ISR

Hasilkan halaman secara statis saat build, render di server untuk setiap permintaan, atau validasi ulang halaman bertembolok sesuai jadwal dengan Incremental Static Regeneration.

SSG SSR dan ISR adalah pelajaran Frontend Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Frontend Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Frontend Academy mencakup 4 pelajaran total.

Tiga Strategi Perenderan

Next.js mendukung tiga cara untuk merender halaman: SSG (Pembuatan Situs Statis), SSR (Perenderan Sisi Server), dan ISR (Regenerasi Statis Inkremen). Masing-masing memiliki kelebihan dan kekurangan yang berbeda.

SSG — Pembuatan Saat Build

Halaman dibuat sebagai HTML statis saat build dan disajikan dari CDN. Pengiriman tercepat yang mungkin. Cocok untuk: halaman pemasaran, blog, dan dokumentasi.

SSG dalam Router Halaman

Ekspor getStaticProps dari sebuah halaman. Fungsi tersebut berjalan saat build dan menyediakan props untuk komponen.

// pages/blog/[slug].tsx
export async function getStaticPaths() {
  const slugs = await fetchAllSlugs();
  return { paths: slugs.map(s => ({ params: { slug: s } })), fallback: false };
}

export async function getStaticProps({ params }) {
  const post = await fetchPost(params.slug);
  return { props: { post } };
}

SSG dalam Router Aplikasi

Secara bawaan, Komponen Server asinkron mengambil data saat build. Gunakan generateStaticParams untuk rute dinamis.

// app/blog/[slug]/page.tsx
export async function generateStaticParams() {
  const posts = await fetchAllPosts();
  return posts.map(p => ({ slug: p.slug }));
}

export default async function Post({ params }) {
  const post = await fetchPost(params.slug);
  return <article>{post.body}</article>;
}

SSR — Pembuatan Per Permintaan

Halaman dirender pada setiap permintaan. Gunakan ini ketika konten bersifat spesifik untuk setiap pengguna atau terlalu sering berubah untuk di-cache.

SSR dalam Router Halaman

Ekspor getServerSideProps.

// pages/dashboard.tsx
export async function getServerSideProps({ req }) {
  const userId = req.cookies.userId;
  const data = await fetchUserDashboard(userId);
  return { props: { data } };
}

SSR dalam Router Aplikasi

Paksa perenderan per permintaan dengan dynamic = 'force-dynamic' atau dengan membaca cookie/header, yang secara otomatis menonaktifkan perenderan statis.

// app/dashboard/page.tsx
import { cookies } from 'next/headers';

export default async function Dashboard() {
  const userId = cookies().get('userId')?.value;
  const data = await fetchUserDashboard(userId);
  return <pre>{JSON.stringify(data, null, 2)}</pre>;
}

// Or explicit:
export const dynamic = 'force-dynamic';

ISR — Keunggulan Keduanya

ISR: sajikan halaman statis, tetapi buat ulang di latar belakang setiap N detik. ISR menggabungkan kecepatan SSG dengan data yang cukup mutakhir.

ISR dalam Router Halaman

Tambahkan revalidate ke getStaticProps.

export async function getStaticProps() {
  const posts = await fetchPosts();
  return {
    props: { posts },
    revalidate: 60  // regenerate at most every 60 seconds
  };
}

ISR dalam Router Aplikasi

Gunakan next: { revalidate: N } pada opsi pengambilan data, atau tetapkan export const revalidate = N pada halaman.

// Option A: per fetch
const posts = await fetch('https://api/posts', { next: { revalidate: 60 } })
  .then(r => r.json());

// Option B: whole page
export const revalidate = 60;

export default async function Page() {
  const posts = await fetch('https://api/posts').then(r => r.json());
  return <Feed posts={posts} />;
}

Validasi Ulang Sesuai Permintaan

Picu pembuatan ulang secara manual, misalnya dari webhook CMS, tanpa menunggu interval waktu.

// pages/api/revalidate.ts (Pages) or app/api/revalidate/route.ts (App)
import { revalidatePath, revalidateTag } from 'next/cache';

export async function POST(req) {
  const { slug } = await req.json();
  revalidatePath(`/blog/${slug}`);
  return Response.json({ revalidated: true });
}

Memilih Strategi yang Tepat

Gunakan SSG ketika data jarang berubah (pemasaran, dokumentasi, blog). Gunakan ISR ketika data sesekali diperbarui (situs berbasis CMS, daftar produk e-commerce). Gunakan SSR untuk konten spesifik pengguna (dasbor, halaman akun).

Cek Cepat

Apa yang dilakukan ISR (Regenerasi Statis Inkremen) yang tidak dilakukan SSG murni?

Ringkasan: SSG, SSR, ISR

SSG: saat build, tercepat, konten tetap. SSR: per permintaan, dinamis, lebih lambat. ISR: SSG + pembuatan ulang terjadwal di latar belakang—cukup mutakhir + cepat. Router Halaman menggunakan getStaticProps/getServerSideProps. Router Aplikasi menggunakan Komponen Server asinkron dengan validasi ulang fetch atau konstanta validasi ulang tingkat halaman. revalidatePath/revalidateTag digunakan untuk pembaruan sesuai permintaan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “SSG SSR dan ISR” gratis?

Ya — teks lengkap “SSG SSR dan ISR” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Frontend Academy, upgrade ke CoddyKit PRO. Kursus Frontend Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “SSG SSR dan ISR”?

Hasilkan halaman secara statis saat build, render di server untuk setiap permintaan, atau validasi ulang halaman bertembolok sesuai jadwal dengan Incremental Static Regeneration. Kamu berlatih Frontend Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Frontend Academy?

Tidak diperlukan pengalaman sebelumnya. Frontend Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “SSG SSR dan ISR” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Frontend Academy ini?

Ya. Setiap pelajaran Frontend Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Router Pages vs Router App
  2. Komponen Server dan Komponen Klien
  3. SSG SSR dan ISR
  4. Rute API dan Middleware Next.js
← Kembali ke Frontend Academy