Mark Ku's Blog

SEO Part 2 優化動態網站對 Google 搜尋引擎的爬蟲友善度

動態網站對 SEO 的影響

現今的動態網站,廣泛的應用到 Javascript 及 Ajax 相關技術,但這些技術對 Google 搜尋引擎的爬蟲並不是這麼的友善,從Google 官方文件指南得知,Google 爬蟲是非常了解 HTML 結構,但在爬取 Javascript 及 Ajax 時仍會有問題,如果要提昇對 Google 爬蟲的友善度,Google 還是建議將內容指向 Html。

Google 官方指南 連結

從官方文件官方整理出幾個重點

  • 避免做 SEO 文字在 canvas 或圖片中 Google bot 爬蟲也是無法辨識。
  • 避免使用 iframe,或者是個別連結至其內容 - 透過 iframe 顯示的內容可能無法編入索引。
  • 避免使用者和Google Bot看到的內容不同。 幕後重新導向
  • 關閉 Javascript 時,應該也要能夠顯示文字。
  • 連結帶上參數時,對於爬蟲來說還是不這麼友善,需要給爬蟲爬取的靜態頁面,還是要給靜態連結。

動態網站 SEO 的解決方案

前面提到了,動態網站對於爬蟲來說不是這麼友善,那身為前端工程師,我們可以透過下列幾種渲染技術,來優化動態網站的 SEO

1.伺服器渲染 - SSR ( server side render )

網頁頁面的數據渲染完全由伺服器端渲染完成才回傳給用戶端。

常見的前端 SSR 框架:
React 生態的 Next.js
Vue 生態的 Nuxt.js
Angular 生態的 Universal

優點

  • 爬蟲訪問網站時,可立即拿到最新更新的頁面
  • 更快將內容傳遞到用戶端,特別是對於緩慢的網路情況或運行緩慢的設備(網路環境沒這麼好的國家),無需等到 JavaScript 都完成下載並執行,才顯示服務器渲染的標記,用戶將會更快速地看到完整渲染的頁面,可獲得更好的用戶體驗。

缺點

  • 渲染交給伺服器端,可能達致伺服器負載可能過重
  • 部署伺服器需要更高的要求,與單頁面應用程式 (SPA) 不同,服務器渲染應用程式,需要處於 Node.js server 運行環境。

2.網頁預渲染

2-1.自動撰寫爬蟲預渲染(Prerender 、playwright)

爬蟲訪問網站時,網頁伺服器或程式依據爬蟲的 UserAgent,預先將渲染好的網頁,返回給爬蟲。

優點

  • 可以減少伺服器負載,爬蟲可以不用等待渲染就能拿到結果。

缺點

  • 爬蟲無法拿到最即時的動態網頁內容
  • 技術門檻有點高,使用到技術複雜,你可能需要寫一個 Job 去渲染或是爬蟲去爬取自己的網站,並撰寫程式判斷 Google 爬蟲給予相對應的靜態內容。

2-2.webpack 預渲染(wepack prerender-spa-plugin)

優點:

  • 配置簡單,可以透過路由,渲染出html。

缺點:

  • 預渲染的即有網頁程式碼混雜在一起,需要調整現有的程式碼
  • 不支援捲動式 lazy load 載入及虛擬捲軸.
  • 無法操作prerender底層,缺乏彈性.

3.動態渲染 for SEO ( Dynamic Rendering for SEO )

Rendertron 是 Google Chrome 團隊 利用 node js 及 Puppeteer 所開發的專案,可以用來解決任何 搜尋引擎無法爬取的動態網站內容。

伺服器動態渲染流程,提供內容給瀏覽器與爬蟲
伺服器動態渲染流程,提供內容給瀏覽器與爬蟲

運行原理
網頁服務器,依據搜尋引擎的 bot useragent,將請求轉向 自己架設的 rendertron server ,此時rendertron,有cache 就會使用 cache ,沒有 cache 就會去和啟動 Puppeteer 爬蟲去將網站爬回來。

優點

  • 效能
  • 即時性兼顧
  • 伺服器負擔不這麼大

缺點

  • 需要額外架設一台 dynamic 渲染的服務站台。

P.S. 進階的情境,虛擬列表及 Lazy load ,及更細部的瀏覽器操作,並不支援,但有開放源原始碼,且蠻好改的,可以自己擴充。

測試

https://render-tron.appspot.com/render/欲動態渲染的網址  

相關文件

待續...下一章打算來動手寫爬蟲做網頁預渲染

參考資料

參考資料連結1
參考資料連結2

作者

Mark Ku

擁有 10+ 年經驗的資深軟體工程師,現為 AI 應用 Builder,專注於大型平台架構與簡化複雜系統設計,從電商系統到訂閱與收費平台,結合 AI Agent、AI 整合與自動化開發,打造高效率且可持續演進的產品技術基礎。閱讀更多

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可

熱門文章

View all
Mark Ku
··604

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··471

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··329

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··240

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1
Mark Ku
··235

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調
Mark Ku
··216

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取