前端架構-CSR、SSR 和 SSG

將從 定義、流程、優缺點和適用場景 四個方面詳細說明它們的區別。


一、核心定義

縮寫英文中文核心思想
CSRClient-Side Rendering客戶端渲染服務器發送一個空的 HTML 殼和 JavaScript bundle,由瀏覽器下載并執行 JS 來渲染內容。
SSRServer-Side Rendering服務端渲染服務器在每次請求時,動態生成并填充數據的完整 HTML 頁面,然后發送給瀏覽器。
SSGStatic Site Generation靜態站點生成項目構建時,就預先生成好完整的、帶內容的 HTML 頁面。服務器直接返回這些現成的文件。

二、詳細流程對比

為了更直觀地理解三者的區別,下圖展示了從用戶請求到頁面展示的完整流程差異:

用戶/瀏覽器服務器CDNCSR (Client-Side Rendering)1. 請求 URL2. 返回空HTML框架 + JS鏈接3. 請求并下載JS bundle白屏等待4. 執行JS,渲染頁面并請求數據可能再次等待5. 更新DOM,完全可交互SSR (Server-Side Rendering)1. 請求 URL2. 服務器執行代碼動態生成帶內容的HTML3. 返回完整內容的HTML顯示內容(可閱讀)4. 下載并執行JS (Hydration注水)5. 頁面完全可交互SSG (Static Site Generation)1. 請求 URL2. 直接返回預先生成的完整HTML文件瞬間顯示內容(可閱讀)3. 下載并執行JS (Hydration注水)4. 頁面完全可交互用戶/瀏覽器服務器CDN

通過上圖流程可以清晰地看到:

  • CSR 的“白屏時間”最長,因為需要等待 JS 下載、執行并完成數據抓取后才會渲染內容。
  • SSRSSG 都能快速呈現初始內容,因為它們直接向瀏覽器提供了完整的 HTML。兩者的核心區別在于 HTML 的生成時機:SSR 是“動態生成”,而 SSG 是“預先構建”。

三、優缺點對比

CSRSSRSSG
優點1. 前后端分離,開發模式清晰。
2. 服務器壓力小,資源消耗低。
3. 首次加載后,后續頁面切換極快(SPA體驗)。
1. 首屏加載快,用戶體驗好。
2. SEO 友好,搜索引擎可直接抓取。
3. 社交分享預覽效果好。
1. 性能極致,速度最快(可從CDN分發)。
2. 安全性高,無服務器端邏輯。
3. SEO 友好
4. 部署簡單、成本低。
缺點1. 首屏加載慢,白屏時間長。
2. SEO 不友好,爬蟲難以抓取。
3. 社交分享預覽內容為空。
1. 服務器壓力大,每次請求都渲染。
2. 開發復雜度高,需考慮服務端環境。
3. TTI可能較慢,注水完成前無法交互。
1. 不適用于高度動態內容(如 dashboard)。
2. 數據變化需重新構建整個站點。

四、如何選擇?適用場景是什么?

  • 選擇 CSR 如果

    • 你的應用是后臺管理系統、Dashboard 等對 SEO 毫無要求的場景。
    • 你非常看重 SPA 的流暢交互體驗,且用戶不會頻繁刷新頁面。
  • 選擇 SSR 如果

    • 你的應用是內容型網站(新聞站、博客、電商商品頁),SEO 和首屏速度是生命線
    • 你需要為每個用戶或每次請求生成個性化內容(如用戶儀表盤)。
    • 你愿意承擔更高的服務器成本和開發復雜度。(Next.js, Nuxt.js 等框架極大地降低了復雜度)
  • 選擇 SSG 如果

    • 你的網站內容主要是靜態的,數據不會頻繁變更(文檔、博客、公司官網、營銷落地頁)。
    • 你追求極致的性能、安全性和低廉的托管成本
    • 你甚至可以接受在內容更新后等待一段構建時間。(Next.js, Gatsby, VuePress, Hugo 等都是優秀的SSG框架)

現代框架的融合趨勢

值得注意的是,像 Next.js 這樣的現代框架并不強迫你只選擇一種模式,而是支持混合模式(Hybrid)

  • 你可以將大部分頁面設置為 SSG(如博客文章、產品頁)。
  • 將少數需要服務器渲染的頁面設置為 SSR(如用戶訂單頁)。
  • 同時保留 CSR 的交互體驗(如網站后臺)。

這種“量體裁衣”的方式,讓你能為每個頁面選擇最合適的渲染策略,從而在性能、SEO和開發體驗上取得最佳平衡。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96545.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96545.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96545.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

主動性算法-解決點:新陳代謝

主動性[機器人與人之間的差距,隨著不斷地人和人工智能相處的過程中,機器人最終最終會掌握主動性,并最終走向獨立,也就是開始自己對于宇宙的探索。]首先:第一步讓機器人意識到自己在新陳代謝,人工智能每天有哪些新陳代謝…

開始理解大型語言模型(LLM)所需的數學基礎

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領…

prometheus安裝部署與alertmanager郵箱告警

目錄 安裝及部署知識拓展 各個組件的作用 1. Exporter(導出器) 2. Prometheus(普羅米修斯) 3. Grafana(格拉法納) 4. Alertmanager(告警管理器) 它們之間的聯系(工…

芯科科技FG23L無線SoC現已全面供貨,為Sub-GHz物聯網應用提供最佳性價比

低功耗無線解決方案創新性領導廠商Silicon Labs(亦稱“芯科科技”,NASDAQ:SLAB)近日宣布:其第二代無線開發平臺產品組合的最新成員FG23L無線單芯片方案(SoC)將于9月30日全面供貨。開發套件現已上…

Flutter跨平臺工程實踐與原理透視:從渲染引擎到高質產物

🌟 Hello,我是蔣星熠Jaxonic! 🌈 在浩瀚無垠的技術宇宙中,我是一名執著的星際旅人,用代碼繪制探索的軌跡。 🚀 每一個算法都是我點燃的推進器,每一行代碼都是我航行的星圖。 &#x…

【國內電子數據取證廠商龍信科技】淺析文件頭和文件尾和隱寫

一、前言想必大家在案件中或者我們在比武中遇到了很多關于文件的隱寫問題,其實這一類的東西可以進行分類,而我們今天探討的是圖片隱寫,音頻隱寫,電子文檔隱寫,文件頭和文件尾的認識。二、常見文件頭和文件尾2.1圖片&am…

深度學習筆記36-yolov5s.yaml文件解讀

🍨 本文為🔗365天深度學習訓練營中的學習記錄博客🍖 原作者:K同學啊 yolov5s.yaml源文件 yolov5s.yaml源文件的代碼如下 # YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parameters nc: 20 #80 # number of classe…

PostgreSQL 大對象管理指南:pg_largeobject 從原理到實踐

概述 有時候,你可能需要在 PostgreSQL 中管理大對象,例如 CLOB、BLOB 和 BFILE。PostgreSQL 中有兩種處理大對象的方法:一種是使用現有的數據類型,例如用于二進制大對象的 bytea 和用于基于字符的大對象的 text;另一種…

算法第四題移動零(雙指針或簡便設計),鏈路聚合(兩個交換機配置)以及常用命令

save force關閉導出dis vlandis ip int bdis int bdis int cudis thisdis ip routing-table(查路由表)int bridge-aggregation 1(鏈路聚合,可以放入接口,然后一起改trunk類。)穩定性高

告別繁瑣配置!Retrofit-Spring-Boot-Starter讓HTTP調用更優雅

01 引言 之前分享過一篇文章【像調用接口一樣調用第三方API】,今天迎來了新成員Retrofit。 retrofit-spring-boot-starter 是一個基于 Spring Boot 的 starter,它簡化了 Retrofit 在 Spring 環境中的集成和使用。Retrofit 本身是一個類型安全的 HTTP 客…

60_基于深度學習的羊群計數統計系統(yolo11、yolov8、yolov5+UI界面+Python項目源碼+模型+標注好的數據集)

目錄 項目介紹🎯 功能展示🌟 一、環境安裝🎆 環境配置說明📘 安裝指南說明🎥 環境安裝教學視頻 🌟 二、數據集介紹🌟 三、系統環境(框架/依賴庫)說明🧱 系統環…

代理服務器是什么?怎么選擇?

代理服務器是一種位于用戶設備與目標網絡之間的中間服務器,通過接收用戶請求、轉發至目標網絡并將結果返回給用戶,實現“用戶→代理服務器→目標網絡”的間接訪問。其核心功能圍繞“網絡優化”“訪問控制”與“身份隱藏”展開,為個人與企業用…

代碼隨想錄刷題Day56

子集 這道題求子集,集合的基本運算之一,按照高中數學學習集合的知識,可以把這個找冪集的過程按照元素的個數來劃分步驟。也就是先找零個元素的子集,再找一個元素的子集,再找兩個元素的子集...一直到找N個元素的集合為…

pycharm——關于Pyqt5

PyQt5新手教程(七萬字) import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QPushButton, QLabel, QInputDialog, QColorDialog, QFontDialog, QFileDialog, QProgressDialog, QMessageBox from PyQt5.QtCore i…

P2678 [NOIP 2015 提高組] 跳石頭

P2678 [NOIP 2015 提高組] 跳石頭 判斷條件該怎么寫

小麥矩陣系統:一鍵批量發,多賬號同步不掉鏈

隨著互聯網的發展和社交平臺的普及,企業和個人用戶越來越依賴社交媒體平臺來進行信息傳播、品牌宣傳以及市場推廣。在這個信息高速流動的時代,如何更高效地管理多個社交平臺的賬號,并保持信息的同步與流暢傳播,成為了許多企業面臨…

JavaScript經典面試題二(函數和作用域)

目錄 一、閉包,使用場景 1.閉包的定義 2.閉包的實現原理 3.閉包的應用場景 (1)數據封裝與私有變量 (2)函數柯里化 (3)事件處理與回調 (4)模塊化開發 4.注意事項 …

Linux防火墻iptables

目錄 一,Iptables概述 二,iptables組成 1,表 2,鏈 3,鏈表對應關系 4,數據包過濾的匹配流程 5,規則匹配策略 三,iptables防火墻配置 1,iptables命令 2&#xff…

[優選算法專題二——NO.16最小覆蓋子串]

題目鏈接 LeetCode最小覆蓋子串 題目描述 代碼編寫 、關鍵注意點 僅統計目標相關字符:通過 hash1.count(in) 判斷字符是否在 t 中,避免無關字符(如 s 中的 D、E)干擾統計,提升效率。count 的更新時機:僅當…

考研408計算機網絡近年第34題真題解析(2021-2024.34)

(2021.34)此題已明確為差分曼徹斯特編碼,通常第一個時間間隙可能不太好判斷,因為0,或1可以變化,但差分曼徹斯特編碼的其它位置可以判斷,圖中黃色數字的時間間隙位置,開始位置和前面一…