首頁 > web前端 > js教程 > 何時在 Next.js 中使用 SSR 和 SSG

何時在 Next.js 中使用 SSR 和 SSG

DDD
發布: 2025-01-04 08:50:35
原創
913 人瀏覽過

When to use SSR and SSG in Next.js

SSR(伺服器端渲染):

在每次向伺服器發出請求時運行。
每次使用者造訪頁面時,伺服器都會取得數據,呈現 HTML,然後將其傳送到客戶端。
這確保了內容始終是新鮮的,但由於伺服器端處理的開銷,它可能會變慢。

SSR 時間軸範例:

請求1:用戶A訪問→伺服器取得數據,動態生成頁面,並回應。

請求2:用戶B訪問→伺服器再次取數據,動態生成頁面,並回應。

export async function getServerSideProps(context) {
  const res = await fetch(`https://api.example.com/data`)
  const data = await res.json()

  return {
    props: { data }, // Will be passed to the page component as props
  }
}

function Page({ data }) {
  return <div>{data. Content}</div>
}
export default Page;
登入後複製

SSG(靜態站點產生):

在建置時運行(當您執行下一個建置時)。
HTML 和資料被預先渲染並儲存為靜態檔案。這些文件直接提供給用戶,速度超級快。

可選:如果您使用 revalidate,Next.js 將在指定的時間間隔後在背景重建頁面,確保更新的內容可用。
具有重新驗證功能的 SSG 時間軸範例:60:

建置時間:頁面使用建置時可用的資料進行預先渲染。

請求 1:(建置後):使用者 A 存取 → 提供靜態 HTML。

後台重新產生(60 秒後):Next.js 取得新資料並重新產生頁面。

請求 2:(重新產生後):使用者 B 存取 → 提供更新的靜態 HTML。

export async function getStaticProps() {
  const res = await fetch('https://api.example.com/posts')
  const posts = await res.json()

  return {
    props: { 
      posts 
    },
    // Optional: Regenerate the page at most once every 60 seconds
    revalidate: 60 
  }
}

function BlogPage({ posts }) {
  return (
    <div>
      {posts. Map(post => (
        <div key={post.id}>{post.title}</div>
      ))}
    </div>
  )
}
登入後複製

SSR: 取得新資料並根據每個請求產生頁面。

SSG: 在建置時(或在計劃的重新驗證間隔期間)預先渲染頁面一次,並向所有使用者提供相同的預先建置頁面,直到重新產生。

在下列情況下使用 SSR:

您需要即時、最新的內容(例如儀表板、使用者特定資料)。
內容頻繁變化,無法有效快取。

在下列情況下使用 SSG:

內容不常改變(例如部落格文章、行銷頁面)。
速度和性能至關重要。

以上是何時在 Next.js 中使用 SSR 和 SSG的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板