搜尋引擎怎麼運作?爬取、索引與排名的三個階段
搜尋引擎的工作分成三個階段。理解它們的分工,才知道 SEO 的每一項工作是在解決哪一段的問題。
| 階段 | 做什麼 | 前端能影響嗎 |
|---|---|---|
| 1. 爬取(Crawling) | 發現網址並下載內容 | 高 |
| 2. 索引(Indexing) | 理解內容並存進資料庫 | 高 |
| 3. 排名(Ranking) | 依查詢挑出最相關的結果 | 低 |
前兩段才是工程師的戰場
第三段的權重主要在內容品質與外部連結,那不是改程式碼能解決的。所以 技術 SEO 幾乎全部集中在前兩段。
第一階段:爬取
怎麼發現新頁面
| 來源 | 說明 | 可靠度 |
|---|---|---|
| 從已知頁面的連結 | 順著 <a href> 追過去 | 最主要 |
| 網站地圖 | 主動告知有哪些網址 | 輔助 |
| 主動提交 | Search Console 的要求編制索引 | 單頁加速 |
抓取的順序與頻率
爬蟲不是均勻地抓每一頁。它會依這些因素決定順序:
| 因素 | 影響 |
|---|---|
| 頁面的重要性 | 從首頁點幾次能到、被幾個頁面連到 |
| 更新頻率 | 常變的頁面抓得比較勤 |
| 伺服器的回應能力 | 回應慢或出錯就降低頻率 |
lastmod | 誠實填寫時會被參考 |
爬取預算
爬取預算 是搜尋引擎願意花在您網站上的抓取次數。它由兩個因素決定:
| 因素 | 說明 |
|---|---|
| 抓取容量上限 | 您的伺服器承受得住多少(回應慢就降低) |
| 抓取需求 | 搜尋引擎認為您的內容值得抓多少 |
小網站不必擔心
頁面數在數千以內的網站幾乎不會碰到預算上限。它主要影響大型電商與內容平台。
真正該注意的是不要浪費它
這些會把預算耗在沒有價值的網址上:
| 浪費來源 | 處理方式 |
|---|---|
| 排序與篩選的參數組合 | robots.txt 封鎖或 canonical 合併 |
| 站內搜尋結果頁 | Disallow |
| 無限分頁 | 分頁設計 |
| 大量 轉址 | 一跳到底,不要串接 |
| 重複內容 | canonical |
三種排序 × 五種顏色 × 五個價格區間 = 七十五種組合。每一個都是獨立網址,每一個都要花一次抓取。
什麼會擋住爬取
| 阻礙 | 說明 |
|---|---|
robots.txt 的 Disallow | 明確禁止下載 |
| 非 200 的 狀態碼 | 抓不到內容 |
robots.txt 回傳 5xx | 可能暫停抓取整站 |
| 需要登入 | 爬蟲沒有帳號 |
| 需要 JavaScript 才能導覽 | 走不到連結 |
第二階段:索引
抓取只是把 HTML 下載回來。索引才是「理解內容並決定要不要收錄」。
兩階段渲染
這是純 CSR 網站最大的風險
| 階段 | 做什麼 | 時間 |
|---|---|---|
| 1. 初次解析 | 解析下載回來的 HTML | 立即 |
| 2. 渲染 | 排進佇列,執行 JavaScript | 通常幾秒,但沒有保證 |
第一階段看到的是伺服器回傳的原始 HTML。如果那裡只有一個空的 <div>,內容就得等第二階段。
而第二階段有三個風險:佇列延遲、程式碼出錯就整頁放棄、資源被封鎖就渲染不出來。
詳見 純 CSR 的 SEO 問題 。
社群爬蟲沒有第二階段
Facebook、X、LINE 的預覽爬蟲 完全不執行 JavaScript。它們永遠只看到第一階段的內容。
所以靠程式碼注入的 Open Graph 標籤對它們永遠無效,這個問題沒有「等一下就會好」的可能。
索引時在理解什麼
| 從哪裡讀 | 得到什麼 |
|---|---|
<title> | 這一頁的主題 |
| 標題階層 | 頁面的大綱與涵蓋的子題 |
| 地標元素 | 哪一段是主要內容 |
| 內文文字 | 具體在講什麼 |
圖片的 alt | 圖片的內容 |
| 錨點文字 | 被連結頁面的主題 |
| 結構化資料 | 內容的類型與屬性 |
canonical | 哪個網址是正式版本 |
這張表就是語意化 HTML 的價值
每一項都對應到一個具體的標記決定。選對標籤等於把答案直接寫給搜尋引擎,而不是讓它猜。
不被索引的原因
| 原因 | 說明 |
|---|---|
標了 noindex | 明確拒絕 |
| 內容重複 | 被合併到其他版本 |
| 內容量太少 | 不足以構成獨立主題 |
| 品質不足 | 自動產生、無實質內容 |
| 網站權重不足 | 新站或小站,不是所有頁面都會被收錄 |
在 Search Console 的頁面索引報告裡會看到對應的代碼,判讀見 Google Search Console 。
第三階段:排名
使用者輸入查詢後,搜尋引擎從索引裡挑出最相關的結果。
排名訊號有數百個
不要相信「十大排名因素」這類說法
官方的說法是數百個訊號,而且 權重會依查詢情境調整,「今天天氣」與「JavaScript 閉包」這兩個查詢重視的東西完全不同。
任何聲稱知道確切權重的說法都不可信。
工程師動得到的那幾項
| 訊號 | 前端能做什麼 |
|---|---|
| 可爬取與可索引 | 前兩個階段的全部工作 |
| 行動裝置友善 | viewport 與 RWD |
| HTTPS | 全站統一 https |
| 載入體驗 | Core Web Vitals |
| 沒有干擾性的插頁廣告 | 版面設計 |
| 呈現優勢(非排名) | 結構化資料 帶來的複合式結果 |
前兩項是門檻,不是加分
「可爬取與可索引」不是排名訊號,它是 參賽資格。沒過就完全不在名單上,談排名沒有意義。
行動裝置友善也接近門檻性質:行動優先索引之下,行動版讀不了的頁面等於整頁受影響。
內容相關性仍然是主導
這也是為什麼 技術 SEO 的定位是「讓好內容有機會被看見」,而不是「取代好內容」。
排名是動態的
同一個關鍵字每次搜的結果可能不同,因為排名會依這些調整:
| 因素 | 說明 |
|---|---|
| 地區 | 在地商家、法規、語言偏好 |
| 語言 | 瀏覽器與帳號設定 |
| 裝置 | 行動與桌機的結果可能不同 |
| 搜尋歷史 | 個人化 |
| 搜尋意圖 | 同一個字詞在不同情境下的意思 |
各階段對應到這個系列的哪些章節
| 階段 | 相關章節 |
|---|---|
| 爬取 | 索引控制 、robots.txt 、sitemap 、狀態碼 、網址結構 、分頁 、內部連結 |
| 索引 | 渲染模式 、語意化結構 、結構化資料 、canonical 、meta robots 、hreflang |
| 排名 | Core Web Vitals 、圖片 、字型 、viewport |
| 呈現(第三階段之後) | meta 標籤 、結構化資料 、favicon |
排查問題時照這個順序
遇到「頁面沒被收錄」或「流量掉了」時,一定要 從第一階段往後查:
- 爬得到嗎?(狀態碼、
robots.txt) - 讀得到內容嗎?(渲染)
- 被收錄了嗎?(
noindex、重複內容) - 才談排名。
很多人一發現問題就去改標題與描述,那是第三階段之後的事,問題往往卡在第一關。完整流程見 網頁怎麼被 Google 收錄 。
常見問題
搜尋引擎怎麼發現新頁面?
主要靠三個來源:從已知頁面的連結追過去、讀取 網站地圖 ,以及網站主動提交網址。其中連結是最主要的來源,這也是為什麼沒有被任何頁面連到的孤兒頁面很難被發現。
什麼是渲染佇列?
需要執行 JavaScript 才看得到內容的頁面,會被排進一個獨立的佇列等待渲染。這個階段通常只等幾秒,但沒有保證,排隊的頁面多時會久得多,而且程式碼出錯就整頁放棄。這是 純用戶端渲染 最大的風險。
爬取預算需要在意嗎?
頁面數在數千以內的網站幾乎不必擔心。它主要影響大型電商與內容平台。真正該注意的是不要用大量參數網址與無限分頁把預算浪費在沒有價值的網址上。
排名訊號有幾個?
官方說法是數百個,而且權重會依查詢情境調整。工程師真正動得到的只有幾項:頁面是否可被爬取與索引、行動裝置友善度、載入體驗,以及結構化資料帶來的呈現優勢。
為什麼同一個關鍵字每次搜的結果不一樣?
排名會依使用者的地區、語言、裝置、搜尋歷史與當下的搜尋意圖調整。所以自己搜自己的網站看到的排名不一定代表一般使用者看到的,要看平均排名應該用 Search Console 的成效報告 。