<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>應用情境｜林鼎淵 Dean Lin</title>
    <link>https://deanlin.net/tags/%E6%87%89%E7%94%A8%E6%83%85%E5%A2%83/</link>
    <image><url>https://deanlin.net/images/author_hu_aa256fc934e9a932.jpg</url><title>應用情境｜林鼎淵 Dean Lin</title><link>https://deanlin.net/tags/%E6%87%89%E7%94%A8%E6%83%85%E5%A2%83/</link><width>144</width><height>144</height></image>
    <description>林鼎淵（Dean Lin）的部落格：生成式 AI 企業內訓講師、外商資安公司軟體專家、7 本書作者。400 多篇文章用白話分享生成式 AI 實戰、Claude Code 與 Vibe Coding 教學、團隊合作與職場成長。</description>
    <generator>Hugo</generator>
    <language>zh-tw</language>
    <copyright>© 2020–2026 林鼎淵 Dean Lin</copyright>
    <lastBuildDate>Sun, 26 Sep 2021 14:10:12 +0800</lastBuildDate>
    <atom:link href="https://deanlin.net/tags/%E6%87%89%E7%94%A8%E6%83%85%E5%A2%83/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>[面試][前端]如何判斷專案要使用 CSR 還是 SSR？</title>
      <link>https://deanlin.net/blog/202109/fullstack-career-notes-day-11/</link>
      <pubDate>Sun, 26 Sep 2021 14:10:12 +0800</pubDate>
      <guid>https://deanlin.net/blog/202109/fullstack-career-notes-day-11/</guid>
      <dc:creator>林鼎淵</dc:creator>
      <category>職涯成長</category>
      <description>除非你是草創成員，不然進入一間公司後，往往都是跟著前輩訂下的規則走；大部分的前輩在交接的時候只會說要這樣做，而不會告訴你為什麼要這樣做。</description>
      <media:content url="https://deanlin.net/blog/202109/fullstack-career-notes-day-11/images/cover_hu_b4e5269210256fac.jpg" medium="image" type="image/jpeg" width="1200" height="675" />
      <content:encoded><![CDATA[<blockquote>
<p>如果前輩說什麼你就做什麼，長久下來你會失去判斷能力。</p>
</blockquote>
<p>除非你是草創成員，不然進入一間公司後，往往都是跟著前輩訂下的規則走；大部分的前輩在<mark>交接的時候只會說要這樣做，而不會告訴你為什麼要這樣做</mark>。</p>
<p>不懂就問，不會就學；前輩說的也未必都是正確的，過去的設計可能存在缺陷，只是當時沒有發現；也可能因為時空背景關係，現在已經不適用了；<mark>希望大家永遠保留自己的意識，與面對未知的懷疑</mark>。</p>
<h2 id="大綱">大綱<a class="h-anchor" href="#%e5%a4%a7%e7%b6%b1" aria-label="這個段落的連結"></a></h2>
<ol>
<li><strong>如何判斷專案要使用 CSR 還是 SSR？</strong>
<ul>
<li>1.1 面試官為什麼會問？</li>
<li>1.2 面試官想從答案確認什麼？</li>
<li>1.3 筆者提供的簡答</li>
</ul>
</li>
<li><strong>回答問題所需具備的知識</strong>
<ul>
<li>2.1 CSR - Client-Side Rendering（客戶端渲染）</li>
<li>2.2 SSR - Server-Side Rendering（伺服器端渲染）</li>
</ul>
</li>
<li><strong>衍伸問題</strong>
<ul>
<li>3.1 在實務上有遇過什麼問題？你如何解決？</li>
</ul>
</li>
</ol>
<hr>
<h2 class="h-nomark" id="1-如何判斷專案要使用-csr-還是-ssr">1. 如何判斷專案要使用 CSR 還是 SSR？<a class="h-anchor" href="#1-%e5%a6%82%e4%bd%95%e5%88%a4%e6%96%b7%e5%b0%88%e6%a1%88%e8%a6%81%e4%bd%bf%e7%94%a8-csr-%e9%82%84%e6%98%af-ssr" aria-label="這個段落的連結"></a></h2>
<h3 class="h-nomark" id="11-面試官為什麼會問">1.1 面試官為什麼會問？<a class="h-anchor" href="#11-%e9%9d%a2%e8%a9%a6%e5%ae%98%e7%82%ba%e4%bb%80%e9%ba%bc%e6%9c%83%e5%95%8f" aria-label="這個段落的連結"></a></h3>
<p>因為<mark>履歷資訊</mark>中顯示求職者使用<code>Nuxt.js</code>這個 Vue.js 的應用框架；而選擇這個框架通常是為了 SSR，於是想透過這個問題確認求職者是否明白 SSR 與 CSR 的意思，以及各自的應用場景。</p>
<hr>
<h3 class="h-nomark" id="12-面試官想從答案確認什麼">1.2 面試官想從答案確認什麼？<a class="h-anchor" href="#12-%e9%9d%a2%e8%a9%a6%e5%ae%98%e6%83%b3%e5%be%9e%e7%ad%94%e6%a1%88%e7%a2%ba%e8%aa%8d%e4%bb%80%e9%ba%bc" aria-label="這個段落的連結"></a></h3>
<ul>
<li>是否可以簡述 CSR 與 SSR 的應用場景</li>
<li>細問時可以說出各自的優缺點</li>
<li>在實務上如何發揮各自優點</li>
</ul>
<hr>
<h3 class="h-nomark" id="13-筆者提供的簡答">1.3 筆者提供的簡答<a class="h-anchor" href="#13-%e7%ad%86%e8%80%85%e6%8f%90%e4%be%9b%e7%9a%84%e7%b0%a1%e7%ad%94" aria-label="這個段落的連結"></a></h3>
<p>如果是<mark>操作頻繁</mark>的的內部管理系統，我會建議使用 <code>CSR</code>，由 Client 負責編譯 HTML 頁面以降低 Server 端壓力；而面對<mark>需要 SEO 優化</mark>的網站，我會推薦用 <code>SSR</code>，因為 Client 端會直接收到由 Server 端編譯好的 HTML，利用首屏渲染快的優勢提供較好的使用者體驗。</p>
<hr>
<h2 class="h-nomark" id="2-回答問題所需具備的知識">2. 回答問題所需具備的知識<a class="h-anchor" href="#2-%e5%9b%9e%e7%ad%94%e5%95%8f%e9%a1%8c%e6%89%80%e9%9c%80%e5%85%b7%e5%82%99%e7%9a%84%e7%9f%a5%e8%ad%98" aria-label="這個段落的連結"></a></h2>
<h3 class="h-nomark" id="21-csr---client-side-rendering客戶端渲染">2.1 CSR - Client-Side Rendering（客戶端渲染）<a class="h-anchor" href="#21-csr---client-side-rendering%e5%ae%a2%e6%88%b6%e7%ab%af%e6%b8%b2%e6%9f%93" aria-label="這個段落的連結"></a></h3>
<p><mark>渲染過程全部交給 Client 端的瀏覽器去處理</mark>，Server 端不參與任何渲染。一開始的 HTML 是空白的，需要等待 JavaScript 下載並執行後瀏覽器才會顯示畫面。</p>
<ul>
<li><strong>優點</strong>
<ul>
<li><strong>減少 Server 端的壓力</strong><br>因為 JavaScript 及 CSS 在第一次都已經發送到 Client 端，之後只需要向 Server 端取得相關頁面的 data 即可。</li>
<li><strong>頁面切換速度快</strong><br>因為 HTML 頁面都是 Client 端自己編譯的，所以頁面切換時不需要像 SSR 等待 Server 端回傳 HTML；而且網頁內容的改變通常都是局部的，這樣就避免了不必要的跳轉及重複渲染。</li>
</ul>
</li>
<li><strong>缺點</strong>
<ul>
<li><strong>首屏顯示慢</strong><br>明明首頁只有一點內容卻下載了所有頁面的資源。</li>
<li><strong>SEO 較差</strong><br>因爲一開始的 HTML 頁面是空白的；儘管現在 Google 的爬蟲也會等 JavaScript 編譯好再爬，但這塊對 SEO 的實際幫助還需要時間驗證。</li>
</ul>
</li>
<li><strong>應用場景</strong>
<ul>
<li><strong>會高頻操作且不需 SEO 的網站</strong><br>像是內部管理系統（ERP 系統、訂單管理系統），如果這類型的系統採取 SSR 會造成 Server 端較大的負荷。</li>
</ul>
</li>
</ul>
<hr>
<h3 class="h-nomark" id="22-ssr---server-side-rendering伺服器端渲染">2.2 SSR - Server-Side Rendering（伺服器端渲染）<a class="h-anchor" href="#22-ssr---server-side-rendering%e4%bc%ba%e6%9c%8d%e5%99%a8%e7%ab%af%e6%b8%b2%e6%9f%93" aria-label="這個段落的連結"></a></h3>
<p><mark>HTML 由 Server 端編譯出來返回 Client 端</mark>，所以 Client 看到的畫面就是最終版 HTML。</p>
<ul>
<li><strong>優點</strong>
<ul>
<li><strong>SEO 排名更高</strong><br>因為 Google 爬蟲可以直接抓到網站的資訊。</li>
<li><strong>首屏渲染快</strong><br>因為不需要下載一堆 JavaScript 及 CSS ，還要等待它們編譯後才看到頁面。</li>
<li><strong>減少 Client 端的耗電量</strong><br>因為編譯的步驟都在 Server 端執行。</li>
</ul>
</li>
<li><strong>缺點</strong>
<ul>
<li><strong>Server 端承受比較大的壓力</strong><br>由於頁面都是在 Server 端進行編譯，在高併發場景中會消耗相當大的資源。</li>
</ul>
</li>
<li><strong>應用場景</strong>
<ul>
<li><strong>低頻操作但需要 SEO 優化的網站</strong><br>像是媒體類型的網站（部落格、新聞網站、技術文件），因為文章要被搜尋到才會有流量及話題，而且大部分的時候 Client 端都在閱讀，很少有高頻操作的情境。</li>
</ul>
</li>
</ul>
<hr>
<h2 class="h-nomark" id="3-衍伸問題">3. 衍伸問題<a class="h-anchor" href="#3-%e8%a1%8d%e4%bc%b8%e5%95%8f%e9%a1%8c" aria-label="這個段落的連結"></a></h2>
<h3 class="h-nomark" id="31-在實務上有遇過什麼問題你如何解決">3.1 在實務上有遇過什麼問題？你如何解決？<a class="h-anchor" href="#31-%e5%9c%a8%e5%af%a6%e5%8b%99%e4%b8%8a%e6%9c%89%e9%81%87%e9%81%8e%e4%bb%80%e9%ba%bc%e5%95%8f%e9%a1%8c%e4%bd%a0%e5%a6%82%e4%bd%95%e8%a7%a3%e6%b1%ba" aria-label="這個段落的連結"></a></h3>
<p><mark>考點：了解你在實務上是否能靈活運用</mark></p>
<ul>
<li><strong>先簡述自己遇過的問題</strong><br>假設 Client 端的網路環境不理想又採用 CSR，那在首屏渲染的過程可能就趕走許多使用者；在這種情況下 SSR 會因為 Server 環境相對穩定而獲得較好的使用者體驗。</li>
<li><strong>再說明解決方式</strong><br>無論是 CSR 還是 SSR 都有各自的優勢與弱點，所以我通常會讓第一個頁面用 SSR 來爭取更高的 SEO，其他操作頻率高的頁面則採用 CSR 讓使用者有良好的體驗；目前 Nuxt.js（Vue）、Next.js（React）這兩個框架都是很好的解決方案</li>
</ul>
<hr>
<p>感謝大家的閱讀，如果喜歡我的文章可以<code>訂閱</code>接收通知；如果有幫助到你，按<code>Like</code>可以讓我更有寫文的動力，我們明天見～</p>
<h3 id="參考資源">參考資源<a class="h-anchor" href="#%e5%8f%83%e8%80%83%e8%b3%87%e6%ba%90" aria-label="這個段落的連結"></a></h3>
<ol>
<li><a href="https://medium.com/dean-lin/119ca6f5ecc#1a75">SSR、CSR 名詞理解 &amp; 應用場景(筆者部落格)</a></li>
</ol>
<hr>
<hr>
<blockquote>
<p><img src="https://deanlin.net/blog/202109/fullstack-career-notes-day-11/images/fullstack-career-notes-day-11-01.webp" width="1024" height="233" alt="參考資源（圖 1）" fetchpriority="high" decoding="async"></p>
<p>在許多人的幫助下，本系列文章已成功出版，除了添加新的篇章，更完善了每個案例的應對進退；如果對現在的職涯感到迷茫，也許這本書能帶給你不一樣的觀點～</p>
<p><strong>天瓏書局：</strong> <a href="https://www.tenlong.com.tw/products/9786263334571">https://www.tenlong.com.tw/products/9786263334571</a></p>
</blockquote>
]]></content:encoded>
    </item>
  </channel>
</rss>
