SSR、CSR名詞理解 & 應用場景

這篇文章寫於 2021 年,文中的工具與版本可能已經更新,實作時請以官方文件為準。

本文目錄
  1. CSR — Client-Side Rendering(客戶端渲染)
  2. 優點:
  3. 缺點:
  4. 應用場景:
  5. SSR — Server-Side Rendering(伺服器端渲染)
  6. 優點:
  7. 缺點:
  8. 應用場景:
  9. 可以思考的問題
  10. 現實面遇到的狀況
  11. 運用框架結合 CSR 與 SSR 的優點讓網站取得雙贏

當老闆或是主管問你為什麼選擇這個技術時,如果支支吾吾打不出來就遜掉了;理解為什麼該這樣做才是對技術的負責。

SSR、CSR名詞理解 & 應用場景(圖 1)

CSR - Client-Side Rendering(客戶端渲染)
  ➤ 優點
  ➤ 缺點
  ➤ 應用場景
SSR - Server-Side Rendering(伺服器端渲染)
  ➤ 優點
  ➤ 缺點
  ➤ 應用場景
可以思考的問題
  ➤ 現實面遇到的狀況
  ➤ 運用框架結合 CSR 與 SSR 的優點讓網站取得雙贏

CSR — Client-Side Rendering(客戶端渲染)

渲染過程全部交給 client 的瀏覽器去處理,server 不參與任何渲染。一開始的 HTML 是空白的,需要等待 JS 下載並執行後瀏覽器才會顯示畫面。

優點:

  • 減少 server 端的壓力:因為 JS 及 CSS 在第一次都已經發送到 client 端,之後只需要向 server 端取得相關頁面的 data 即可
  • 頁面切換速度快:因為 HTML 頁面都是 client 端自己編譯的,所以頁面切換時不需要像 SSR 等待 server 回傳 HTML;而且網頁內容的改變通常都是局部的,這樣就避免了不必要的跳轉及重複渲染。

缺點:

  • 首屏顯示慢:明明首頁只有一點內容卻把下載了所有頁面的資源
  • SEO 較差:因一開始的 HTML 是空白的,雖然現在 Google 的爬蟲也會等 javascript 編譯好再爬,但這塊對 SEO 的實際幫助還需要時間驗證

應用場景:

  • 會高頻操作且不需 SEO 的網站:像是內部管理系統,如果這類型的系統採取 SSR 會造成 server 端很大的負荷。

SSR — Server-Side Rendering(伺服器端渲染)

HTML 由 server 編譯出來返回 client 端,所以 client 看到的畫面就是最終版 HTML。

優點:

  • SEO 排名更高:因為 Google 爬蟲可以直接抓到網站的資訊
  • 首屏渲染快:因為不需要下載一堆 JS 以及 CSS 執行後才看到頁面
  • 減少 client 端的耗電量:因為編譯的步驟都在 server 端執行

缺點:

  • server 端承受比較大的壓力:由於頁面都是在 server 端進行編譯,在高併發場景中會消耗相當大的資源

應用場景:

  • 低頻操作但需要 SEO 優化的網站:像是媒體類型的網站,因為文章需要被搜尋到,我們看一篇文章也需要一點時間很少高頻的操作這個網站

可以思考的問題

現實面遇到的狀況

在 CSR 的狀況下如果某個頁面需要同時存取多個 api,假設 client 端的網速不理想,那使用者的體驗會極差;在這種情況下 SSR 會因為 server 環境相對穩定而獲得相對好的使用者體驗。

運用框架結合 CSR 與 SSR 的優點讓網站取得雙贏

經由上面的分析,我想大家應該已經感受到 CSR 與 SSR 可以說是性質完全相反的渲染了,所以實際應用上我們通常會讓第一個頁面用 SSR 來爭取更高的 SEO,其他的頁面則採用 CSR 的方式來操作給使用者兩好的體驗。

現有的框架: Nuxt.js(Vue)、Next.js(React)都有很好的解決方案


以上是我個人針對 SSR、CSR 技術的理解,如果有理解錯誤的地方希望有大神給予指教,感恩不盡~

Talk

留言討論

留言載入中…