Comparison

Claude Code के साथ SSR vs SSG: Choosing the Optimal Rendering Strategy

Claude Code का उपयोग करके ssr vs ssg: choosing the optimal rendering strategy सीखें। Practical tips और code examples शामिल हैं।

SSR と SSG の基本

Webapplicationのレンダリング方式は、performanceとuser体験に大きく影響し है।Claude Code का उपयोग करके、Projectに最適なレンダリング戦略を設計・implementationでき है।

特性SSRSSG
レンダリングタイミングrequest時build時
TTFBやや遅い非常に速い
dataの鮮度常に最新build時点
server負荷高い低い(CDN配信)
向いているコンテンツ動的コンテンツ静的コンテンツ

SSR のimplementation(Next.js)

// app/products/[id]/page.tsx
import { notFound } from "next/navigation";

interface ProductPageProps {
  params: { id: string };
}

// SSR: requestごとに実行
export default async function ProductPage({
  params,
}: ProductPageProps) {
  const product = await fetch(
    `https://api.example.com/products/${params.id}`,
    { cache: "no-store" } // SSR: cacheしない
  ).then((res) => res.json());

  if (!product) {
    notFound();
  }

  return (
    <div>
      <h1>{product.name}</h1>
      <p>価格: ${product.price.toLocaleString()}</p>
      <p>在庫: {product.stock}個</p>
      <p>最終update: {new Date().toLocaleString("ja-JP")}</p>
    </div>
  );
}

SSG のimplementation(Next.js)

// app/blog/[slug]/page.tsx
import { getAllPosts, getPostBySlug } from "@/lib/posts";

// SSG: build時に全page generate
export async function generateStaticParams() {
  const posts = await getAllPosts();
  return posts.map((post) => ({
    slug: post.slug,
  }));
}

export default async function BlogPost({
  params,
}: {
  params: { slug: string };
}) {
  const post = await getPostBySlug(params.slug);

  return (
    <article>
      <h1>{post.title}</h1>
      <time>{post.publishedAt}</time>
      <div dangerouslySetInnerHTML={{ __html: post.content }} />
    </article>
  );
}

ISR(Incremental Static Regeneration)

SSGとSSRのअच्छाところ取りができるISRも選択肢 है।

// app/news/page.tsx
export const revalidate = 60; // 60秒ごとに再generate

export default async function NewsPage() {
  const news = await fetch("https://api.example.com/news").then(
    (res) => res.json()
  );

  return (
    <div>
      <h1>最新ニュース</h1>
      {news.map((item: any) => (
        <article key={item.id}>
          <h2>{item.title}</h2>
          <p>{item.summary}</p>
        </article>
      ))}
    </div>
  );
}

Astro での SSG

---
// src/pages/blog/[slug].astro
import { getCollection } from "astro:content";
import BlogLayout from "@/layouts/BlogLayout.astro";

export async function getStaticPaths() {
  const posts = await getCollection("blog");
  return posts.map((post) => ({
    params: { slug: post.slug },
    props: { post },
  }));
}

const { post } = Astro.props;
const { Content } = await post.render();
---

<BlogLayout title={post.data.title}>
  <article>
    <h1>{post.data.title}</h1>
    <Content />
  </article>
</BlogLayout>

ハイブリッド戦略

एकのProject内でSSR・SSG・ISR use करके分ける実践的なpattern है।

// pageごとの最適な戦略
const renderingStrategy = {
  // SSG: update頻度が低い
  "/about": "SSG",
  "/blog/*": "SSG",
  "/docs/*": "SSG",

  // ISR: 定期的にupdate
  "/products/*": "ISR (60s)",
  "/categories/*": "ISR (300s)",

  // SSR: リアルタイム性がज़रूरी
  "/dashboard": "SSR",
  "/search": "SSR",
  "/cart": "SSR",
};

performance比較

Claude Codeにperformanceの計測とoptimizationを依頼でき है।

各pageのレンダリング方式を分析してoptimizationして。
- LighthouseスコアをSSR/SSG/ISRで比較
- TTFBとLCPの改善提案
- 静的化できるpageを特定して SSG に変更
- 動的pageにはISRのappropriateなrevalidate値をsettings

判断フローチャート

レンダリング方式を選ぶ際の判断基準 है।code分割 के साथ combineたoptimizationはcode分割・遅延読み込みを、エッジでの配信के बारे मेंはエッジコンピューティングもदेखें。

  1. コンテンツは静的か → SSG
  2. 数分の遅延は許容できるか → ISR
  3. リアルタイム性がज़रूरीか → SSR
  4. user固有のdataか → SSR + clientフェッチ

詳細はNext.jsのレンダリングガイドをदेखें。Claude Codeのutilization法はofficial documentation confirm करें।

Summary

SSR・SSG・ISRはどれかひとつに決めるज़रूरीはなく、pageの特性に応じて使い分けるのが最適 है।Claude CodeにProject全体を分析させて、各pageに最適なレンダリング方式を提案してもらいましょう。

#Claude Code #SSR #SSG #Next.js #Astro #performance
मुफ़्त

मुफ़्त PDF: 5 मिनट में Claude Code चीटशीट

बस अपना ईमेल दर्ज करें और हम तुरंत A4 एक-पृष्ठ चीटशीट PDF भेज देंगे।

हम आपकी व्यक्तिगत जानकारी की सुरक्षा करते हैं और स्पैम नहीं भेजते।

Masa

लेखक के बारे में

Masa

Claude Code का गहराई से उपयोग करने वाले इंजीनियर। claudecode-lab.com चलाते हैं, जो 10 भाषाओं में 2,000 से अधिक पेजों वाला टेक मीडिया है।