ν‹°μŠ€ν† λ¦¬ λ·°

Next 14λ²„μ „μ—μ„œλŠ”

fetch μ˜΅μ…˜ 기본값을 SSG λ Œλ”λ§μ²˜λŸΌ 정적 데이터λ₯Ό λΉŒλ“œν•˜κ²Œ λ‘μ—ˆλ‹€.

ν•˜μ§€λ§Œ μ‹€μ œλ‘œ μ•„λ¬΄λŸ° μ˜΅μ…˜μ„ 적지 μ•Šμ•˜μ„ λ•Œ, μ˜ˆμƒμΉ˜ μ•Šμ€ λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€.


 

μ•„λž˜ λ‘œμ§μ€ fetch μ˜΅μ…˜μ„ μ£Όμ§€ μ•Šκ³  SSG λ Œλ”λ§μ„ κ΅¬ν˜„ν•˜μ˜€λ‹€.

// SSG > page.tsx

import { Post } from "@/types/type";
import React from "react";

const SSGPage = async () => {
  const response = await fetch("http://localhost:4000/posts", {
    cache: "force-cache",
  });
  const data: Post[] = await response.json();
  console.log("data", data);

  return (
    <>
      <div>SSGPage</div>
      <div>{JSON.stringify(data)}</div>
      ⭐️ SSR μ»΄ν¬λ„ŒνŠΈ (Test.tsx) λ“€μ–΄κ°ˆ 자리 ⭐️ 
    </>
  );
};

export default SSGPage;

export default SSGPage;

λΉŒλ“œ ν›„ SSG νŽ˜μ΄μ§€κ°€ Static(정적)으둜 잘 λ Œλ”λ§ λ˜μ—ˆλ‹€.

 

 

β­οΈν‘œμ‹œν•œ μžλ¦¬μ— { cache: "no-store" } μ˜΅μ…˜μ„ μ€€ SSR λ Œλ”λ§ μ»΄ν¬λ„ŒνŠΈλ₯Ό import ν•˜μ—¬ μΆ”κ°€ν•˜μ˜€λ‹€.

// Test.tsx

import { Post } from "@/types/type";
import React from "react";

const Test = async () => {
  const response = await fetch("http://localhost:4000/posts", {
    cache: "no-store",
  });
  const data: Post[] = await response.json();
  console.log("data", data);

  return (
    <>
      <div>Test</div>
      <div>{JSON.stringify(data)}</div>
    </>
  );
};

export default Test;

λΉŒλ“œ ν›„ SSG νŽ˜μ΄μ§€κ°€ Dynamic(동적)으둜 λ°”λ€Œμ—ˆλ‹€.

 

πŸ“Œμ¦‰, 정적인 νŽ˜μ΄μ§€μ— 동적인 μ»΄ν¬λ„ŒνŠΈλ₯Ό μΆ”κ°€ν•˜λ©΄ νŽ˜μ΄μ§€ 전체가 λ™μ μœΌλ‘œ 바뀐닀 !

κ·Έλ ‡λ‹€λ©΄, 데이터λ₯Ό μΆ”κ°€ν–ˆμ„ λ•ŒλŠ” μ–΄λ–»κ²Œ μž‘λ™ν• κΉŒ?

 

πŸ€”μ˜ˆμƒ μž‘λ™

κΈ°μ‘΄ SSG의 htmlμš”μ†Œ (JSON.stringify λΆ€λΆ„)은 λ³€ν•˜μ§€ μ•Šκ³  κ³ μ •,

μΆ”κ°€ν•œ 동적 μ»΄ν¬λ„ŒνŠΈ (Test.tsx)μ—λ§Œ 값이 μΆ”κ°€ 될 κ²ƒμœΌλ‘œ μ˜ˆμƒν–ˆλ‹€.

 

πŸš¨μ‹€μ œ μž‘λ™

데이터 μΆ”κ°€ ν›„ μƒˆλ‘œκ³ μΉ¨ μ‹œ 전체 νŽ˜μ΄μ§€(html + 동적 μ»΄ν¬λ„ŒνŠΈ)에 값이 μΆ”κ°€λ˜μ—ˆλ‹€.

 

 

πŸ“Œν•΄κ²° 방법

fetch μ˜΅μ…˜μ„ { cache: "force-cache" } 둜 두어 λΉŒλ“œν•˜λ‹ˆ κΈ°μ‘΄ html은 κ³ μ •, 동적 μ»΄ν¬λ„ŒνŠΈλ§Œ λ³€ν™”ν•˜λŠ” λͺ¨μŠ΅μ„ 보인닀.

// SSG > page.tsx

import { Post } from "@/types/type";
import React from "react";
import Test from "./Test";

const SSGPage = async () => {
  const response = await fetch("http://localhost:4000/posts", {
    cache: "force-cache", ⭐️좔가
  });
  const data: Post[] = await response.json();
  console.log("data", data);

  return (
    <>
      <div>SSGPage</div>
      <div>{JSON.stringify(data)}</div>
      <Test />
    </>
  );
};

export default SSGPage;

 

 

 

14버전 Nextμ—μ„œ 패치 μ˜΅μ…˜μ„ 아무것도 μ£Όμ§€ μ•Šμ•˜μ„ λ•Œ “force-cache” μ˜΅μ…˜μ„ μ€€ λ“― 정적인 html이 μƒμ„±λ˜μ—ˆμ§€λ§Œ,

동적인 μ»΄ν¬λ„ŒνŠΈκ°€ μΆ”κ°€λ˜μ—ˆμ„ λ•Œ νŽ˜μ΄μ§€ 전체가 λ³€λ™λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒν–ˆλ‹€.

λ”°λΌμ„œ ν˜Ήμ‹œ λͺ¨λ₯Ό 상황을 λŒ€λΉ„ν•΄ 패치 μ˜΅μ…˜μ„ μ •ν™•ν•˜κ²Œ λͺ…μ‹œν•˜λŠ” 것이 ν•„μš”ν•˜λ‹€κ³  λŠκΌˆλ‹€.

 

15λ²„μ „μ—μ„œλŠ” 기본값을 SSR둜 μ£Όκ³ , SSGλ₯Ό λ”°λ‘œ μ„€μ •ν•˜λŠ” λ°©ν–₯으둜 κ°œμ„ λ˜μ—ˆλ‹€κ³  ν•œλ‹€. 

곡지사항
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€
Total
Today
Yesterday
링크
TAG
more
Β«   2026/03   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
κΈ€ 보관함