面向內容型網站的 JavaScript 索引實作拆解:五種渲染方式如何影響收錄

面向內容型網站的 JavaScript 索引實作拆解:五種渲染方式如何影響收錄

答案:要把主要內容放於原始碼階段(SSR/SSG/預先渲染),才能確保搜尋收錄與 AI 可見性穩定。

判斷與第一結論(先給判斷)

  • 關鍵判斷:你的主要內容是否存在於「第一階段」的原始碼(即爬蟲第一次取得的 HTML)?如果在,收錄速度快且穩定;如果只在「第二階段」渲染後出現(瀏覽器或引擎執行 JavaScript 之後),收錄會延後或遺漏。
  • 建議優先級(內容為主的網站):靜態產生(SSG)或伺服器端渲染(SSR)優於純客戶端渲染(CSR)。

下面以實作拆解的方式說明五種渲染模式的輸入、步驟、輸出(對搜尋與 AI 的可見性影響),並附上可執行的檢測步驟與檢查表。

五種渲染方式的比較(輸入→處理→輸出)

方式一:純客戶端渲染(CSR)

  • 輸入:使用者或爬蟲請求一個含最小 HTML 殼(通常沒有主要內容)的 URL。
  • 處理:瀏覽器載入 JavaScript,執行框架(如單頁應用)產生 DOM 與主要內容。
  • 輸出:完整頁面在瀏覽器上看起來正常,但原始 HTML 幾乎空白。
  • 對搜尋/AI 的影響:收錄表現最差。常見現象包括首頁被收錄但摘要空白、內頁大量未被收錄、以及所有頁面片段化的標題描述。多數語言模型與代理程式通常不執行腳本或在第二階段才執行,導致內容不可見。
  • 何時選用:僅當網站主要是登入後的應用功能且公開行銷頁面另有處理時才可考慮。

方式二:伺服器端渲染(SSR)

  • 輸入:請求由伺服器產生完整 HTML(包含主要內容、標題、描述與結構化資料)。
  • 處理:伺服器在回應時就把資料渲染成完整頁面;可搭配快取層減少伺服器負載。
  • 輸出:爬蟲與語言模型在第一階段即可看到主要內容。
  • 對搜尋/AI 的影響:收錄表現與傳統伺服器渲染網站相同,穩定且快速,是內容型網站的首選。
  • 代價與需注意:伺服器負載較高,必須設計快取策略及預處理以應對大量流量。

方式三:靜態產生(SSG)

  • 輸入:在建置階段(build)由系統把每個頁面生成靜態 HTML 檔案。
  • 處理:部署靜態檔案到 CDN,請求直接回傳已渲染的 HTML。
  • 輸出:最高的收錄與載入速度,但內容更新需重新建置與部署。
  • 適用情境:內容相對穩定(例如服務頁、部落格、產品型錄),能以定期建置與增量部署管理變更。
  • 限制:大量頁面或高頻更新會讓建置時間成為瓶頸,需規劃增量或分段建置流程。

方式四:動態渲染(Dynamic Rendering)

  • 輸入:同一 URL 根據 User-Agent 或偵測結果決定回應版本。
  • 處理:一般使用者得到 CSR 版本;爬蟲或偵測為機器人時,伺服器回傳預先渲染或快照版本。
  • 輸出:可解決收錄速度與可見性問題,但需確保兩套版本的內容一致。
  • 對搜尋/AI 的影響:短期有效;長期維護成本高,且若不同步會有風險(內容不一致可能觸發搜索引擎懲罰)。
  • 建議:僅當無法改為 SSR 或 SSG 時作為過渡方案,並定期自動比對兩版本內容。

方式五:混合式(Partial SSR / Incremental Hydration)

  • 輸入:首屏與主要內容由伺服器產生,互動性強的區塊由客戶端補上或水化(hydration)。
  • 處理:分區渲染,重點內容在第一階段輸出,互動由第二階段補完。
  • 輸出:接近 SSR 的收錄效果,保有互動體驗,但實作較複雜。
  • 風險:若某些頁面類型未被妥善處理,可能意外退化為純 CSR;因此務必逐一驗證每種類型頁面的實際輸出。

怎麼檢測自己的網站(步驟、輸入、輸出)

以下三個簡單檢測都不需要額外工具,直接在開發或操作環境就能執行。

檢測一:檢視原始碼並搜尋正文文字(快速判斷)
– 輸入:開啟瀏覽器 → 右鍵「檢視原始碼」→ 使用搜尋(Ctrl/Cmd+F)找頁面上的一段正文文字。
– 預期輸出:如果找不到該段文字,表示該內容不在原始碼(第一階段)內,可能只有在執行腳本後才出現。

檢測二:關閉瀏覽器腳本後重新載入(模擬爬蟲第一階段)
– 步驟:在開發者工具中關閉 JavaScript(或使用無痕/禁用擴充功能),重新載入頁面。
– 輸入:同一 URL 在無 JS 的情況下載入。
– 輸出:你看到的內容就是搜尋引擎在第一階段通常可見的內容。
– 判斷:若關閉 JS 後主要內容消失,表示該頁為 CSR 類型或主要內容在第二階段渲染。

檢測三:使用搜尋主控台的網址檢查(具體比對)
– 輸入:在 Google Search Console 使用「網址檢查」→ 檢視「已檢索的頁面」版本與實際畫面。
– 輸出:比對爬蟲檢索到的 HTML 與瀏覽器渲染的差異,確認標題、描述、主要內容是否已被索引器看到。

實作檢測清單(檢查表)
– 主要內容是否在原始碼中可見?
– title 與 meta description 是否在原始碼中存在且每頁不同?
– 內部連結是否使用標準 標籤並可直接訪問?
– 分頁與篩選結果是否有可訪問的獨立 URL?
– 結構化資料(JSON-LD/schema)是否在第一階段輸出?

修復與實作路線(輸入、步驟、輸出)

這裡按短期 / 中期 / 長期給出可操作的選項與預期效果。

短期修復(當下可執行,輸出為暫時改善)
– 方法:動態渲染或預先渲染特定關鍵頁面(例如熱門文章、主要分類頁)。
– 步驟:建立一個自動化流程來預渲染這些 URL,並讓偵測到爬蟲的請求回傳快照版本。
– 風險:需建立內容一致性比對機制;維護成本高。

中期修復(系統調整)
– 方法:針對行銷/公共頁面改用 SSG,或把內容頁改為 SSR。
– 步驟:將現有內容頁遷移到能在伺服器端渲染的路由,設定快取策略(CDN、邏輯快取)。
– 輸出:穩定的收錄與更佳的 AI 可見性,較高的伺服器規劃需求。

長期策略(架構設計)
– 方法:在新專案階段以「內容型優先」決策,選擇 SSR 或 SSG 作為預設。
– 步驟:設計 CI/CD 流程支援增量建置、設定內容 API 與快取失效策略、建立測試來驗證各頁面渲染輸出。
– 輸出:可擴充且低風險的網站生命週期管理。

實作注意事項(輸入條件與輸出驗收)
– 若選 SSR:確認伺服器能支援高併發請求與可擴展的快取層;驗收標準為「在無 JS 下也能取得主要內容與 meta」。
– 若選 SSG:設計增量建置或分批部署以避免全量建置造成延遲;驗收為「主要頁面於 CDN 可即時回應」。
– 若選動態渲染:建立每日或每次發佈後的兩版本比對報表,驗收為「內容一致率 100%(或近似)」,並記錄例外。

限制、例外與常見誤解

  • 搜尋引擎「可以」執行 JavaScript,但通常屬於第二階段且不保證何時執行,因此不應依賴其執行腳本來暴露主要內容。
  • 多數 AI 代理程式或語言模型內部的抓取器不會執行腳本,因此若你想被 AI/LLM 同時讀取,主要內容仍應在原始碼中存在。
  • 有些高度互動的應用必須使用 CSR;在此情況下,應把行銷與公開內容拆分成 SSG/SSR,而把應用本體留給 CSR。

檢查表(作為上線前快速審核)

真正由本文回答的 FAQ(3–5題)

Q1:搜尋引擎現在會執行 JavaScript,為什麼還要把內容放在原始碼?
A1:搜尋引擎的 JavaScript 執行屬於第二階段且可能延後數小時到數週,不保證會執行;多數 AI 代理也不執行腳本。因此若主要內容只在第二階段出現,收錄會變慢或遺漏,故建議將主要內容放在第一階段的原始碼中。

Q2:我的網站已是純客戶端渲染,短期怎麼改善收錄?
A2:短期可對熱門或重要頁面採用預先渲染或動態渲染,確保爬蟲能取得預渲染的 HTML;中期則應考慮把關鍵頁面改為 SSR 或 SSG。

Q3:混合式渲染能兼顧互動與收錄嗎?有哪些風險?
A3:混合式(首屏 SSR,互動由客戶端補上)能大幅改善收錄並保留互動,但實作複雜,必須逐頁驗證渲染輸出,否則部分頁面可能意外退化為 CSR。

Q4:內部連結用 JavaScript 事件(非標準連結)會造成什麼問題?
A4:若內部導覽依賴點擊事件而非標準
,爬蟲無法從首頁發現內頁,可能造成只有首頁被收錄而內頁未被索引的情況。解決方式是確保導覽與內容連結使用標準連結並提供可直接訪問的 URL。

Q5:我要如何把檢測流程自動化?
A5:可將三種檢測(檢視原始碼搜尋、無 JS 重載、Search Console 比對)整合到自動化測試或 CI 流程,並在每次部署後執行比對報告與例外通知。

自然的下一步(內連與資源)


本文為實作拆解與可執行檢測、修復建議;請依站方資源與流量預估選擇合適方案,並在變更後逐頁驗證渲染輸出與搜尋主控台索引狀態。

參考資源:Google Reference