最近...嗯,其實一直以來啦,很多人都在問 JavaScript 跟 SEO 的關係。
特別是現在一堆網站都用 React, Vue, Angular 這些框架,整個網站就像個 App。 感覺很酷,但 SEO 好像就...嗯,有點麻煩。😅
今天就來隨便聊聊這個話題吧。不用想得太複雜,就當作在群組裡閒聊。
所以,Google 到底看不看得懂 JavaScript?
先說結論:看得懂,但不是完美的。🤔
以前大家都會說「JS 做的網站對 SEO 不好」,這在幾年前是真的。 但現在的 Googlebot 聰明多了,它內建了一個叫 Evergreen 的東西,基本上就是一個最新版的 Chrome 瀏覽器。 所以理論上,你在 Chrome 上能看到的,它大部分也都能看到。
不過,事情沒這麼簡單。Google 處理有 JS 的網頁,大致上是三個步驟:抓取 (Crawl)、轉譯 (Render)、建立索引 (Index)。
- 抓取 (Crawl):Googlebot 先來你家門口,拿走最原始的 HTML 檔案。
- 轉譯 (Render):如果它發現這個 HTML 很空,需要跑 JS 才能生出內容,它就會把這個網頁丟到一個「待處理」的清單裡排隊。 等輪到它的時候,再用那個像 Chrome 的東西去跑 JS,把完整的畫面畫出來。
- 建立索引 (Index):最後,把畫出來的完整內容,存到它的超大資料庫裡,這樣大家才能搜到。
問題就出在第二步,「排隊等待轉譯」。這個過程會花時間,也可能出錯。 如果你的 JS 太複雜、跑太慢,或是中間呼叫的 API 沒回應,Googlebot 可能等得不耐煩就先走了。 結果就是,它只看到一個空白頁,重要的內容跟連結都沒了。這也就是所謂的「爬取預算 (Crawl Budget)」被浪費掉了。
伺服器端渲染 (SSR) 的簡單對比" width="800" height="480" loading="lazy" decoding="async" style="max-width:95%;height:auto;cursor:pointer" class="no_autoresize">
那...網站都是 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:雖然 Google 很強,但不是所有搜尋引擎都這麼厲害。 像是 Bingbot 或其他爬蟲,它們對 JavaScript 的處理能力就比較差。 如果你的目標客群也會用其他搜尋引擎,那最好還是用對所有爬蟲都友善的 SSR 或 SSG。
- 用
robots.txt擋住 JS/CSS 檔案:這是一個很古老的錯誤...有些人為了「節省爬取預算」,會把 JS 或 CSS 檔案擋掉。 千萬不要!你把化妝品跟衣服都藏起來,Google 怎麼知道你長什麼樣子? 結果就是它只看到一個沒穿衣服的 HTML 素人,判斷不了你的網頁品質。 - 連結不是用
:很多前端框架為了頁面切換好看,會用div或span加上onClick事件來模擬連結。這對使用者來說沒差,但對爬蟲來說,這根本不是連結,它就不會跟著點過去,你的網站就變成一堆孤島。 - 內容要等使用者互動才出現:有些內容要點擊「展開更多」或是滑到下面才會載入 (Lazy Loading)。這對使用者體驗很好,但要確保 Googlebot 不用互動也能看到這些內容。現在的 Googlebot 聰明到會模擬滑動,但點擊就不一定了,所以重要內容最好一開始就在 HTML 裡。
那我要怎麼檢查我的網站有沒有問題?
其實工具很簡單,Google 都幫你準備好了。
最直接的方法就是用「行動裝置相容性測試」或 Google Search Console 裡的「網址審查」工具。 把你的網址貼進去,它會跑出一個「已轉譯的網頁」截圖。如果那個截圖跟你實際看到的畫面差很多,或是一片空白,那就代表 Google 在轉譯你的 JS 時出問題了。
你也可以看 HTML 原始碼,如果裡面空空如也,只有一堆 標籤,那你的網站大概就是 CSR,需要特別注意 SEO 問題。
所以,重點一句話
老實說,現在做網站,很難完全不用 JavaScript。與其害怕它,不如好好了解它。
對 SEO 來說,最保險的方式還是 SSR 或 SSG,確保搜尋引擎第一時間就能看到最重要的內容。 CSR 不是不能用,但你必須非常小心,並且持續用 Search Console 監控頁面的索引狀況。 不要把問題想得太難,重點就只是...讓爬蟲「輕鬆」看到你希望它看到的內容而已。
你的網站是哪種情況?有用前端框架嗎?留言分享一下吧,看看大家踩了哪些坑 🤔
