伺服器端渲染(SSR)

伺服器端渲染 (SSR) 指在伺服器上生成 HTML 內容並將其傳送到客戶端的做法。SSR 與客戶端渲染相對,客戶端渲染由客戶端使用 JavaScript 生成 HTML 內容。這兩種技術並非互斥,可以在同一個應用程式中結合使用。

靜態網站可以被視為 SSR(並且可以使用 SSR 基礎設施生成),但兩者存在細微的差別。靜態網站的內容是在構建時生成的,而不是在請求時生成的。靜態網站通常根本不需要部署在伺服器上,可以從CDN提供服務。

SSR/CSR 的區別對於具有動態內容的網站更有意義,例如即時更新或使用者特定內容。在這些情況下,對於每個請求,伺服器都會動態生成 HTML 內容,因為預生成所有可能的頁面是不現實的。HTML 檔案包含近乎完整的頁面內容,任何 JavaScript 資產僅用於實現互動性。

SSR 的優點包括:

  • 可訪問性:頁面在沒有 JavaScript 的情況下(在某種程度上)可用,例如,如果網路緩慢、使用者停用了 JavaScript,或者瀏覽器老舊導致 JavaScript 無法執行。然而,任何互動性或客戶端邏輯將不起作用。
  • 對爬蟲友好:搜尋引擎、社交媒體爬蟲和其他機器人可以輕鬆讀取內容,而無需執行 JavaScript。請注意,主流搜尋引擎能夠執行 JavaScript,因此純 CSR 網站仍然可以被索引,但社交媒體爬蟲通常不能。
  • 效能:伺服器可以提前知道需要哪些內容,並可以一次性獲取所有必要資料,而 CSR 中客戶端通常只有在渲染初始頁面時才知道進一步的依賴項,從而導致一系列請求。

SSR 和 CSR 都有其效能權衡,並且可以混合使用 SSR 和 CSR 來結合這兩種技術的優點。例如,伺服器可以生成帶有空佔位符的頁面骨架,客戶端可以獲取額外資料並根據需要更新頁面。