당신의 WordPress 사이트가 느린 이유와 Next.js로 해결하는 방법

수년에 걸쳐 수백 개의 WordPress 사이트를 감시해본 결과, 대화는 항상 같은 방식으로 시작합니다. "우리는 캐싱 플러그인을 설치했는데 여전히 점수가 형편없습니다." WordPress 생태계에서 아무도 인정하고 싶어하지 않는 진실은 대부분의 성능 문제가 플러그인으로 해결할 수 없다는 것입니다. 이는 구조적 문제입니다. WordPress는 2003년에 PHP로 블로그 게시물을 렌더링하기 위해 만들어졌습니다. 현재 2025년이고, 우리는 이를 복잡한 마케팅 사이트, 전자상거래 플랫폼, 웹 애플리케이션을 구동하도록 요구하고 있습니다. 동시에 Google의 Core Web Vitals는 누군가가 실제로 당신의 콘텐츠를 찾을지 여부를 결정합니다.

이 글은 WordPress 사이트가 느린 이유를 정확히 분석하고, 각 문제를 Core Web Vitals 메트릭에 매핑하며, headless Next.js 아키텍처가 근본적으로 어떻게 문제를 해결하는지 보여줍니다. 임시방편이 아닌, 근본적인 해결책입니다.

목차

당신의 WordPress 사이트가 느린 이유와 Next.js로 해결하는 방법

2025년 Core Web Vitals 이해하기

Google은 2024년 3월 Core Web Vitals을 업데이트하여 First Input Delay(FID)를 Interaction to Next Paint(INP)로 대체했습니다. 이 변경은 대부분의 사람들이 생각하는 것보다 훨씬 중요합니다. 다음은 당신의 사이트의 성능 등급을 결정하는 네 가지 메트릭입니다.

메트릭 측정 대상 좋음 개선 필요 나쁨
LCP (Largest Contentful Paint) 주요 콘텐츠 로드 속도 ≤ 2.5초 2.5초 – 4.0초 > 4.0초
INP (Interaction to Next Paint) 사용자 입력에 대한 반응성 ≤ 200ms 200ms – 500ms > 500ms
CLS (Cumulative Layout Shift) 로드 중 시각적 안정성 ≤ 0.1 0.1 – 0.25 > 0.25
TTFB (Time to First Byte) 서버 응답 시간 ≤ 800ms 800ms – 1800ms > 1800ms

2025년 초의 Chrome UX Report에 따르면, WordPress 오리진의 42%만이 세 가지 Core Web Vitals 임계값을 모두 통과합니다. 이를 Next.js 기반 오리진의 67%와 비교하면, 이는 단순한 편차가 아닙니다. 이는 다른 리그입니다.

이러한 메트릭이 실제로 왜 중요한가

Google은 명확히 했습니다: Core Web Vitals는 순위 신호입니다. 하지만 SEO를 넘어서 이러한 메트릭은 전환율과 직접 상관관계가 있습니다. Vodafone은 LCP에서 31% 개선이 판매 증가 8%로 이어졌음을 발견했습니다. Shopify의 내부 데이터는 페이지 로드 시간이 100ms 감소할 때마다 전환이 1.3% 증가함을 보여줍니다.

당신의 WordPress 사이트는 단순히 느립니다. 돈을 잃고 있습니다.

WordPress가 구조적으로 느린 이유

당신의 일반적인 WordPress 페이지를 누군가가 방문할 때 어떤 일이 발생하는지 단계별로 설명하겠습니다.

  1. DNS 조회 → 도메인 해석
  2. TCP/TLS 핸드셰이크 → 보안 연결 설정
  3. 요청이 서버에 도달 → Apache/Nginx가 수신
  4. PHP가 WordPress를 부트스트랩wp-config.php 로드, WordPress 코어 초기화
  5. 플러그인 초기화 → 모든 활성 플러그인이 init, wp_loaded 등에 훅
  6. 테마 로드functions.php 실행, 템플릿 계층 구조 해석
  7. 데이터베이스 쿼리 실행 → WP_Query 실행, 종종 페이지당 30-100+ 쿼리
  8. PHP가 HTML 렌더링 → 템플릿 파일이 전체 페이지 생성
  9. HTML이 브라우저로 전송 → 드디어 응답 시작
  10. 브라우저가 HTML 파싱 → CSS, JS, 폰트, 이미지 발견
  11. 렌더링 차단 리소스 로드 → 15개 플러그인의 스타일시트
  12. 페이지가 마침내 렌더링 → 사용자가 콘텐츠를 봄

단계 4부터 9까지는 캐시되지 않은 모든 요청에서 발생합니다. 이는 PHP가 200개 이상의 파일을 파싱하고, 수십 개의 데이터베이스 쿼리를 실행하고, HTML을 생성합니다. 브라우저가 단일 바이트를 받기도 전에요.

PHP 문제

PHP 8.3은 PHP 7.x보다 훨씬 빠릅니다. 대부분의 WordPress 호스트는 이제 이를 지원합니다. 하지만 PHP 8.3과 OPcache가 활성화되어 있어도 여전히 동기적이고 차단하는 프로세스를 실행하고 있습니다. WordPress 코어만으로도 모든 요청에서 약 100,000줄의 PHP 코드를 로드합니다. WooCommerce를 추가하면 400,000줄을 넘깁니다.

핵심은 이것입니다: WP Super Cache나 W3 Total Cache 같은 캐싱 플러그인은 이 프로세스를 단락시키고 미리 생성된 HTML 파일을 대신 제공하여 작동합니다. 하지만 이들은 자체적인 복잡성을 도입하고, 개인화된 콘텐츠로 작동이 중단되며, 브라우저에서 발생하는 것을 여전히 해결할 수 없습니다.

테마 문제

대부분의 WordPress 테마는 유연성을 위해 만들어졌으며, 성능을 위해 만들어지지 않았습니다. Avada, Divi, 또는 Elementor 같은 테마는 이러한 기능을 사용하든 사용하지 않든 모든 페이지에서 전체 CSS 및 JavaScript 프레임워크를 로드합니다. 저는 간단한 블로그 게시물에서 2.5MB의 CSS와 1.8MB의 JavaScript를 로드하는 Elementor 사이트를 봤습니다.

<!-- 페이지 빌더 사이트의 일반적인 WordPress head -->
<link rel="stylesheet" href="/wp-content/plugins/elementor/assets/css/frontend.min.css">
<link rel="stylesheet" href="/wp-content/plugins/elementor-pro/assets/css/frontend.min.css">
<link rel="stylesheet" href="/wp-content/themes/hello-elementor/style.css">
<link rel="stylesheet" href="/wp-content/themes/hello-elementor/theme.min.css">
<link rel="stylesheet" href="/wp-content/plugins/contact-form-7/includes/css/styles.css">
<link rel="stylesheet" href="/wp-content/plugins/woocommerce/assets/css/woocommerce.css">
<!-- ... 12개 이상의 스타일시트 -->

이들 각각은 렌더링을 차단하는 리소스입니다. LCP는 모두 다운로드되고 파싱될 때까지 발생할 수 없습니다.

플러그인 비대: 조용한 성능 살인자

평균 WordPress 사이트는 20-30개의 플러그인을 실행합니다. 저는 70개 이상의 플러그인이 있는 사이트를 봤습니다. 각 플러그인은 잠재적으로:

  • 자체 CSS 및 JS 파일을 추가합니다(종종 사용되지 않는 곳에도 모든 페이지에서)
  • WordPress 훅을 등록하여 모든 요청에서 실행됩니다
  • 자체 데이터베이스 쿼리를 실행합니다
  • 부트스트랩 단계에서 자체 PHP 파일을 로드합니다
  • 인라인 스크립트 및 스타일을 <head>에 추가합니다

실제 예

최근 저는 34개의 활성 플러그인을 실행하는 WordPress 마케팅 사이트를 감시했습니다. 네트워크 waterfall이 다음과 같았습니다:

  • 47개의 CSS 파일이 홈페이지에 로드됨
  • 38개의 JavaScript 파일이 홈페이지에 로드됨
  • 전체 페이지 가중치: 4.7MB
  • 총 요청: 127개
  • LCP: 4G에서 6.8초
  • TTFB: 2.1초

클라이언트는 이미 최적화 플러그인(Autoptimize)과 캐싱 플러그인(LiteSpeed Cache)을 설치했습니다. 둘 다 활성화된 상태에서도 LCP는 4.2초였습니다. 여전히 실패합니다.

핵심 문제는 무엇입니까? 필요하지 않은 코드를 로드하는 기본적인 문제를 최적화로 해결할 수 없습니다. 47개의 CSS 파일을 축소하고 결합해도 여전히 렌더링을 차단하는 거대한 CSS 페이로드가 남습니다.

플러그인 의존성 함정

이것이 더 악화되는 이유는 플러그인이 다른 플러그인에 의존한다는 것입니다. WooCommerce를 설치하면 결제 게이트웨이 플러그인이 필요해지고, 배송 계산기 플러그인이 필요해지고, 상품 필터 플러그인이 필요해집니다. 각각은 무게를 추가합니다. 기능을 깨뜨리지 않으면 제거할 수 없습니다.

이것이 WordPress 함정입니다. 아키텍처는 모든 것에 플러그인을 추가하도록 권장하며, 사용되지 않은 코드를 제거할 메커니즘이 없습니다.

당신의 WordPress 사이트가 느린 이유와 Next.js로 해결하는 방법 - 아키텍처

플러그인으로 해결할 수 없는 데이터베이스 쿼리 문제

WordPress는 악명 높게 평탄한 스키마를 가진 단일 MySQL 데이터베이스를 사용합니다. wp_options 테이블은 모든 단일 요청에서 autoload='yes' 항목으로 로드됩니다. wp_options 테이블에 3,000개 이상의 자동로드 행이 총 8MB의 데이터를 포함하는 것을 봤습니다.

-- 자동로드된 옵션 크기 확인
SELECT SUM(LENGTH(option_value)) as autoload_size 
FROM wp_options 
WHERE autoload = 'yes';

-- 이것이 > 1MB를 반환하면 문제가 있습니다

wp_postmeta 테이블은 또 다른 악몽입니다. 모든 것을 키-값 쌍으로 저장하므로 WordPress는 효율적인 쿼리를 할 수 없습니다. $50 미만의 모든 상품을 찾으시겠습니까? 이는 wp_postmeta에서 JOIN으로, 숫자를 저장하는 텍스트 필드에 문자열 비교를 하는 것입니다. 어떤 인덱스도 당신을 구할 수 없습니다.

쿼리 개수 현실 확인

WordPress 사이트에 Query Monitor 플러그인을 설치하고 쿼리 개수를 확인하세요. "간단한" WooCommerce 상품 페이지는 일반적으로 150-300개의 데이터베이스 쿼리를 실행합니다. 관련 게시물, 인기 게시물 사이드바, 이동 경로가 있는 블로그 게시물은? 일반적으로 80-120개의 쿼리입니다.

이를 Next.js 프론트엔드가 필요한 모든 데이터를 가져오기 위해 정확히 하나의 API 호출(또는 정적 생성을 사용하는 경우 0개)을 하는 headless 접근 방식과 비교하세요.

WordPress 호스팅: 평범함에 과다 지불하고 있을 것입니다

호스팅에 대해 이야기하겠습니다. 이는 많은 돈이 낭비되는 곳이기 때문입니다.

호스팅 유형 월간 비용 일반적인 TTFB 아키텍처를 수정할 수 있습니까?
공유(GoDaddy, Bluehost) $3-15 1.5-4.0초 아니요
관리형 WordPress(WP Engine, Flywheel) $25-300 400ms-1.2초 아니요
프리미엄 관리형(Kinsta, Pagely) $35-600 200ms-600ms 아니요
VPS/전용(DigitalOcean, AWS) $20-500 200ms-800ms 아니요
Vercel/Edge의 Next.js $0-20 50-150ms

마지막 열에 주목하세요. 호스팅 업그레이드로는 아키텍처 문제를 해결할 수 없습니다. PHP를 더 빠르게 실행하기 위해 프리미엄 가격을 지불하고 있을 때, 실제 해결책은 모든 요청에서 PHP를 실행하지 않는 것입니다.

Kinsta는 시작 요금제로 25,000 방문당 $35/월을 청구합니다. Vercel의 무료 계층은 100GB의 대역폭을 처리합니다. Vercel의 Pro 계획도 $20/월로 글로벌 CDN 전체에 걸친 edge 배포를 제공합니다. 수학은 거짓말을 하지 않습니다.

Next.js가 각 Core Web Vital을 해결하는 방법

구체적으로 살펴보겠습니다. Next.js(특히 Next.js 14/15의 App Router)가 각 메트릭을 어떻게 해결하는지 설명합니다.

TTFB 해결

Next.js는 여러 렌더링 전략을 제공합니다:

// 정적 생성 - TTFB는 사실상 0(CDN에서 제공됨)
export default async function BlogPost({ params }: { params: { slug: string } }) {
  const post = await getPost(params.slug);
  return <Article post={post} />;
}

// 이것은 빌드 시 미리 렌더링됩니다
export async function generateStaticParams() {
  const posts = await getAllPosts();
  return posts.map((post) => ({ slug: post.slug }));
}

정적 생성을 사용하면 페이지가 미리 구축된 HTML 파일로 전 세계 edge CDN 노드에서 제공됩니다. TTFB는 사용자가 어디에 있든 관계없이 50-100ms로 떨어집니다. PHP 실행 없음, 데이터베이스 쿼리 없음, 요청 시간의 서버 측 처리 없음입니다.

동적 콘텐츠의 경우 Next.js는 ISR(Incremental Static Regeneration)을 지원합니다. 이는 백그라운드에서 재검증하는 동안 캐시된 정적 페이지를 제공합니다:

// 60초마다 재검증
export const revalidate = 60;

LCP 해결

Next.js는 <Image> 컴포넌트를 포함하여 WordPress 플러그인이 시도하고 실패하는 모든 것을 처리합니다:

import Image from 'next/image';

export default function HeroBanner() {
  return (
    <Image
      src="/hero.jpg"
      alt="Hero banner"
      width={1200}
      height={600}
      priority // LCP 이미지를 미리로드합니다
      sizes="100vw"
      // 자동으로 srcset을 생성하고, WebP/AVIF를 사용하며,
      // 기본적으로 지연 로드되며, CLS를 방지합니다
    />
  );
}

priority prop은 Next.js에 이미지를 미리로드하라고 말하여 LCP를 직접 개선합니다. 자동 형식 협상은 지원하는 브라우저에 WebP 또는 AVIF를 제공하여 이미지 크기를 JPEG에 비해 30-50% 줄입니다. 플러그인이 필요하지 않습니다.

Next.js는 또한 CSS 모듈과 자동 중요 CSS 추출을 통해 렌더링 차단 CSS를 제거합니다. 특정 페이지에서 사용되는 CSS만 로드됩니다.

INP 해결

INP는 당신의 사이트가 사용자 상호 작용에 얼마나 빠르게 반응하는지 측정합니다. WordPress 사이트는 INP를 실패합니다:

  • 플러그인의 무거운 JavaScript가 메인 스레드를 차단하기 때문에
  • jQuery 및 플러그인이 실행 시간을 놓고 경쟁하기 때문에
  • 코드 분할이 없음 - 모든 것이 미리 로드됨

Next.js는 자동 코드 분할로 이를 처리합니다. 각 페이지는 필요한 JavaScript만 로드합니다:

// 이 컴포넌트는 사용자가 스크롤할 때만 로드됩니다
import dynamic from 'next/dynamic';

const HeavyChart = dynamic(() => import('@/components/HeavyChart'), {
  loading: () => <ChartSkeleton />,
  ssr: false, // 서버에서 렌더링하지 않음
});

React Server Components(App Router의 기본값)는 더 나아갑니다: 상호 작용이 필요하지 않은 컴포넌트는 브라우저에 0바이트의 JavaScript를 전송합니다. 대화형 요소가 없는 블로그 게시물은? 0KB의 컴포넌트 JavaScript입니다.

CLS 해결

WordPress의 CLS는 일반적으로 다음에서 발생합니다:

  • 명시적 치수가 없는 이미지
  • 콘텐츠를 밀어내려고 늦게 로드되는 광고
  • FOUT/FOIT를 유발하는 웹 폰트
  • 로드 후 나타나는 플러그인 주입 배너

Next.js는 기본적으로 CLS를 방지합니다. <Image> 컴포넌트는 치수를 요구하거나(또는 크기 조정된 컨테이너와 함께 fill을 사용), next/font 모듈은 폰트 선언을 인라인하고 0 레이아웃 시프트로 font-display: swap을 사용합니다:

import { Inter } from 'next/font/google';

const inter = Inter({ subsets: ['latin'] });

export default function RootLayout({ children }) {
  return (
    <html lang="en" className={inter.className}>
      <body>{children}</body>
    </html>
  );
}

FOUT 없음. 폰트로 인한 레이아웃 시프트 없음. 그냥 작동합니다.

Headless 아키텍처: CMS로서의 WordPress, 프론트엔드로서의 Next.js

여기 많은 사람들이 놓치는 부분이 있습니다: headless로 전환하는 것이 WordPress를 포기하는 것을 의미하지는 않습니다. 이는 WordPress를 실제로 잘하는 것(콘텐츠 관리)에 사용하고 Next.js가 프론트엔드를 처리하도록 하는 것을 의미합니다.

아키텍처는 다음과 같습니다:

[WordPress 관리자] → [REST API / WPGraphQL] → [Next.js 프론트엔드] → [Vercel Edge CDN]
     ↑                                              ↑
  콘텐츠 편집자                                 당신의 사용자
  친숙한 WP                                     edge에서 제공되는
  대시보드를 사용합니다                         빠른 페이지를 받습니다

당신의 콘텐츠 팀은 워크플로우를 유지합니다. 당신의 사용자는 빠른 사이트를 받습니다. 당신은 깔끔하고 유지보수 가능한 코드를 받습니다.

저희는 Next.js 개발 관행headless CMS 개발에서 이런 종류의 많은 작업을 수행합니다. 이 패턴은 잘 정립되어 있고 전투에서 검증되었습니다.

다른 Headless CMS 옵션에 대해서는 어떻게 되나요?

WordPress는 콘텐츠 계층의 유일한 옵션이 아닙니다. 처음부터 시작하는 경우 Sanity, Contentful, 또는 Storyblok과 같은 목적 구축 headless CMS 플랫폼이 종종 더 나은 선택입니다. 이들은 API-first로 구축되었으므로 레거시 수하물이 없습니다.

하지만 WordPress에 수년간의 콘텐츠를 가지고 있고 팀이 이를 숙지하고 있다면 WPGraphQL이 있는 headless WordPress는 완전히 타당한 접근 방식입니다.

실제 성능 벤치마크: WordPress vs Next.js

다음은 우리가 수행한 마이그레이션과 공개적으로 사용 가능한 사례 연구의 실제 숫자입니다:

메트릭 WordPress(최적화됨) Next.js(정적) 개선
TTFB 650ms 80ms 87% 더 빠름
LCP 3.8초 1.2초 68% 더 빠름
INP 380ms 90ms 76% 더 빠름
CLS 0.18 0.01 94% 더 나음
페이지 가중치 3.2MB 450KB 86% 가벼움
요청 85 12 86% 더 적음
Lighthouse 점수 45-65 95-100 완전히 다름

"최적화됨" WordPress는 다음을 의미합니다: PHP 8.3, Redis 객체 캐시, CDN, 이미지 최적화 플러그인, 캐싱 플러그인, 데이터베이스 최적화. 당신이 해야 한다고 생각하는 모든 것. 그리고 그것도 가깝지 않습니다.

마이그레이션 경로: 단일형 WordPress에서 Headless Next.js로

마이그레이션이 전부일 필요는 없습니다. 다음은 우리가 일반적으로 권장하는 단계적 접근 방식입니다:

1단계: 평가(1-2주)

  • PageSpeed Insights 및 CrUX 데이터를 사용한 현재 WordPress 사이트 성능 감시
  • 모든 플러그인을 재고하고 각각을 프론트엔드 대 백엔드 기능에 매핑
  • 콘텐츠 모델과 사용자 정의 필드 식별
  • WordPress를 headless CMS로 유지할지 또는 콘텐츠를 완전히 마이그레이션할지 평가

2단계: 프론트엔드 구축(4-8주)

  • App Router를 사용한 Next.js 프로젝트 설정
  • WordPress에서 WPGraphQL 설치 및 구성
  • 현재 디자인과 일치하는 컴포넌트 라이브러리 구축(또는 재설계 - 좋은 시간)
  • 콘텐츠 페이지에 대한 정적 생성 구현
  • 콘텐츠 편집자를 위한 미리 보기 모드 설정

3단계: 시작 및 리다이렉트(1-2주)

  • Next.js 프론트엔드를 Vercel(또는 Netlify, 또는 Cloudflare Pages)에 배포
  • DNS 및 리다이렉트 구성
  • 모든 URL이 올바르게 리다이렉트되는지 확인(SEO 보존이 중요)
  • WordPress 관리자를 잠금(공개 액세스 제거)

4단계: 최적화(진행 중)

  • Google Search Console에서 Core Web Vitals 모니터링
  • ISR 재검증 간격 미세 조정
  • 개인화를 위한 edge 미들웨어 추가
  • WordPress가 병목이 되면 목적 구축 headless CMS로의 마이그레이션 고려

이런 종류의 마이그레이션을 고려하는 경우 가격 페이지에서 대략적인 숫자를 확인하거나 직접 문의하여 특정 상황을 논의할 수 있습니다.

대신 Astro로 구축된 사이트의 경우(특히 콘텐츠가 풍부한 블로그 및 마케팅 사이트), 우리는 정적 우선 사이트를 위해 훨씬 더 공격적인 성능을 제공하는 Astro 개발 관행도 보유하고 있습니다.

FAQ

WordPress로 Next.js로 전환하지 않고도 속도를 올릴 수 있나요? 네, 특정 수준까지는 가능합니다. 품질 호스트(Kinsta 또는 Cloudways)로 시작하고 Redis 객체 캐싱을 활성화하며 GeneratePress 같은 가벼운 테마를 사용하고 플러그인을 15개 이하로 줄이며 CDN을 구성하세요. 이 방식으로 WordPress 사이트를 Core Web Vitals의 "개선 필요" 범위로 가져올 수 있습니다. 하지만 특히 INP에 대해 모든 메트릭에서 일관되게 "좋음" 범위로 들어가는 것은 기존 WordPress 아키텍처로는 극도로 어렵습니다.

WordPress에서 headless Next.js로 마이그레이션하는 데 비용이 얼마나 들나요? 사이트의 복잡도에 따라 다릅니다. 간단한 마케팅 사이트(10-30페이지, 블로그)는 일반적으로 전체 마이그레이션을 위해 $15,000-$40,000을 실행합니다. WooCommerce가 있는 전자상거래 사이트는 더 복잡하여 $50,000-$150,000+의 범위입니다. ROI는 일반적으로 개선된 전환율과 감소된 호스팅 비용에서 나옵니다. 우리의 가격 페이지에 더 많은 세부 사항이 있습니다.

Next.js로 전환하면 SEO 순위가 떨어질까요? 마이그레이션을 올바르게 처리하면 그럴 리 없습니다. 적절한 301 리다이렉트, 동일한 URL 구조(또는 매핑된 리다이렉트), 유효한 메타 태그, 구조화된 데이터, XML 사이트맵이 모두 필수입니다. Next.js는 실제로 SEO 이점을 가집니다 - 더 빠른 Core Web Vitals는 순위를 직접 개선하고, Metadata API는 메타 태그를 프로그래밍 방식으로 관리하기 쉽게 만듭니다. 대부분의 사이트는 마이그레이션 후 2-3개월 내에 순위 개선을 봅니다.

headless로 가면 콘텐츠 편집자가 WordPress 관리자를 잃나요? 아니요. headless 설정에서 WordPress는 콘텐츠 관리 백엔드로 계속 제공됩니다. 편집자는 동일한 대시보드, 동일한 편집자, 동일한 워크플로우를 사용합니다. 그들은 프론트엔드 테마를 더 이상 보지 않습니다. 대신 미리 보기 버튼을 사용하여 Next.js 렌더링 버전을 표시합니다. 일부 팀은 미리 보기가 프로덕션 사이트의 정확한 표현이므로 이것이 실제로 더 낫다고 생각합니다.

WooCommerce에 대해서는 어떤가요 — Next.js가 전자상거래를 처리할 수 있나요? 네, 하지만 더 큰 프로젝트입니다. WooCommerce를 headless로 REST API 또는 WPGraphQL WooCommerce 확장을 통해 사용할 수 있습니다. 또는 많은 팀이 상거래 백엔드를 위해 Shopify의 Storefront API 또는 Saleor로 마이그레이션하고 Next.js를 프론트엔드로 사용합니다. 결제 처리와 PCI 준수를 포함하므로 체크아웃 흐름에는 신중한 처리가 필요합니다. 가능하지만 추가 개발 시간을 계획하세요.

Next.js가 빠른 프론트엔드의 유일한 옵션인가요? 아니요. Astro, Remix, SvelteKit, 그리고 심지어 Nuxt(Vue 팀의 경우)도 모두 viable합니다. Astro는 특히 콘텐츠가 풍부한 사이트에 탁월합니다. 기본적으로 0 JavaScript를 전송하기 때문입니다. Next.js는 상당한 상호 작용, 동적 기능 또는 전자상거래가 필요한 사이트에서 승리합니다. 우리는 프로젝트의 필요에 따라 Next.jsAstro 모두와 함께 작업합니다.

Incremental Static Regeneration(ISR)은 WordPress 콘텐츠와 어떻게 작동하나요? WordPress에서 게시물을 발행하거나 업데이트할 때, 웹훅이 발생하여 Next.js 배포에 특정 페이지를 재검증하도록 지시합니다. 다음 방문자는 새로 생성된 정적 페이지를 받으며, 이는 edge에서 캐시됩니다. 재검증은 백그라운드에서 발생하므로 사용자는 빌드를 기다리지 않습니다. 또한 시간 기반 재검증(예: 60초마다 다시 빌드)을 폴백으로 설정할 수 있습니다.

headless로 이동할 때 팀이 저지르는 가장 큰 실수는 무엇입니까? 자신의 WordPress 사이트를 Next.js에 1:1로 복제하려고 시도하는 것입니다. headless 마이그레이션은 콘텐츠 아키텍처를 다시 생각하고 페이지 구조를 단순화하며 수년간 축적된 불필요한 기능을 제거할 수 있는 기회입니다. 이전 테마의 모든 위젯과 사이드바를 복사하려고 시도하는 팀보다 신선한 시작으로 간주하는 팀(콘텐츠를 유지하지만 프레젠테이션을 다시 생각)이 극적으로 더 나은 결과를 얻습니다.