JavaScript 執行與 SEO 問題:搜尋引擎如何爬取動態內容與常見解決方向

Published on: | Last updated:

最近...嗯,其實一直以來啦,很多人都在問 JavaScript 跟 SEO 的關係。

特別是現在一堆網站都用 React, Vue, Angular 這些框架,整個網站就像個 App。 感覺很酷,但 SEO 好像就...嗯,有點麻煩。😅

今天就來隨便聊聊這個話題吧。不用想得太複雜,就當作在群組裡閒聊。

所以,Google 到底看不看得懂 JavaScript?

先說結論:看得懂,但不是完美的。🤔

以前大家都會說「JS 做的網站對 SEO 不好」,這在幾年前是真的。 但現在的 Googlebot 聰明多了,它內建了一個叫 Evergreen 的東西,基本上就是一個最新版的 Chrome 瀏覽器。 所以理論上,你在 Chrome 上能看到的,它大部分也都能看到。

不過,事情沒這麼簡單。Google 處理有 JS 的網頁,大致上是三個步驟:抓取 (Crawl)、轉譯 (Render)、建立索引 (Index)。

  1. 抓取 (Crawl):Googlebot 先來你家門口,拿走最原始的 HTML 檔案。
  2. 轉譯 (Render):如果它發現這個 HTML 很空,需要跑 JS 才能生出內容,它就會把這個網頁丟到一個「待處理」的清單裡排隊。 等輪到它的時候,再用那個像 Chrome 的東西去跑 JS,把完整的畫面畫出來。
  3. 建立索引 (Index):最後,把畫出來的完整內容,存到它的超大資料庫裡,這樣大家才能搜到。

問題就出在第二步,「排隊等待轉譯」。這個過程會花時間,也可能出錯。 如果你的 JS 太複雜、跑太慢,或是中間呼叫的 API 沒回應,Googlebot 可能等得不耐煩就先走了。 結果就是,它只看到一個空白頁,重要的內容跟連結都沒了。這也就是所謂的「爬取預算 (Crawl Budget)」被浪費掉了。

客戶端渲染 (CSR) vs. <a href=伺服器端渲染 (SSR) 的簡單對比" width="800" height="480" loading="lazy" decoding="async" style="max-width:95%;height:auto;cursor:pointer" class="no_autoresize">
客戶端渲染 (CSR) vs. 伺服器端渲染 (SSR) 的簡單對比

那...網站都是 JS 做的,怎麼辦?

嗯,這就是所謂的「客戶端渲染 (Client-Side Rendering, CSR)」的問題。 也就是把一堆 JS 丟給使用者的瀏覽器去處理,對伺服器來說很輕鬆,但對 SEO 跟使用者初次載入的速度來說,風險比較高。

為了解決這個問題,就出現了好幾種不同的「渲染」方法。大家可以把它們想像成...上菜的方式不同。

不同渲染方式的比較 (口語版)
渲染方式 這是什麼? 優點 👍 缺點 👎 適合誰?
客戶端渲染 (CSR) 給你一包泡麵跟熱水,你自己泡。也就是說,把 JS 丟給瀏覽器自己跑。 開發快、伺服器輕鬆。第一次載入後,頁面切換很快,像 App。 SEO 風險高,Google 可能沒耐心等泡麵泡好。 使用者第一次進來要等比較久。 比較適合不需要 SEO 的後台系統、會員專區,或互動性超強的應用。
伺服器端渲染 (SSR) 廚房直接煮好一碗麵給你。伺服器先把完整的 HTML 弄好再送出去。 對 SEO 最穩,Google 一來就看到完整內容。 伺服器會比較累,成本高一點。開發也比較複雜。 內容常常變動的網站,像是電商、新聞網站、部落格。
靜態網站生成 (SSG) 預先做好一堆便當放著,誰來就直接給。在網站上線前,就把所有頁面都產生好。 速度最快,對 SEO 也超好。 因為都是現成的。 如果內容一改,就要全部重新做一次便當,比較麻煩。 內容不太常變的網站,比如公司官網、文件、個人作品集。
動態渲染 (Dynamic Rendering) 看人給餐。看到是真人就給泡麵自己泡 (CSR);看到是 Googlebot 就給煮好的麵 (SSR)。 算是一種折衷方案,專門為爬蟲服務。 設定有點麻煩,而且 Google 其實把它當作一種過渡時期的解法,不是長久之計。 舊的大型 JS 網站,沒辦法馬上整個改寫成 SSR 時的臨時解藥。

常見的幾個坑,別亂踩

做 JS 網站的 SEO,有幾個地方真的要特別小心。

Google Search Console 中可能出現的 JS 渲染問題
Google Search Console 中可能出現的 JS 渲染問題

那我要怎麼檢查我的網站有沒有問題?

其實工具很簡單,Google 都幫你準備好了。

最直接的方法就是用「行動裝置相容性測試」或 Google Search Console 裡的「網址審查」工具。 把你的網址貼進去,它會跑出一個「已轉譯的網頁」截圖。如果那個截圖跟你實際看到的畫面差很多,或是一片空白,那就代表 Google 在轉譯你的 JS 時出問題了。

你也可以看 HTML 原始碼,如果裡面空空如也,只有一堆

Related to this topic:

Comments

  1. profile
    Guest 2025-08-21 Reply
    這篇文章看起來頗有深度,不過我有點好奇技術細節。聽說現在前端框架越來越複雜,SEO優化真的是個大挑戰。你們是怎麼處理這塊的?感覺有點像在跳舞,既要美又要實用
  2. profile
    Guest 2025-07-08 Reply
    嘿,這篇文章好棒喔!我最近在做網站專案,剛好遇到一些SEO的盲點。想請教一下,有沒有機會跟作者討論更多細節?我們實驗室正在研究前端優化,超級需要這方面的專業建議!
  3. profile
    Guest 2025-04-13 Reply
    哎呀,最近小孩在學網站設計,一直聽到他在講JavaScript和SEO什麼的。想請教各位專家,這些技術真的會影響網站排名嗎?如果孩子想學好這塊,有沒有什麼特別要注意的地方啊?謝謝啦!