蜘蛛拿到的是什么
搜尋引擎抓取一個 URL 时,第一步拿到的是服務器返回的原始 HTML。它不會像浏览器那样先把頁面里的脚本全部执行完再决定看什么,至少第一步不是。如果正文、标题、内鏈都靠 JavaScript 在浏览器里生成,蜘蛛第一次拿到的可能只是一個空壳:几個 div、一段脚本引用,正文一個字都没有。
後續搜尋引擎确實會用渲染服務再跑一遍頁面,把 JS 执行後的内容补上。但這一步是排队進行的,不是每次抓取都必然完成,渲染资源也有上限。所以“能渲染出来”和“每次都稳定渲染出来”之間,差別並不小。
三種渲染方式抓到的内容差在哪
- 客戶端渲染(CSR):服務器返回的 HTML 基本是空的,内容由浏览器执行 JS、請求接口後拼接。蜘蛛首轮拿到的内容最少,能否拿到完整内容取决于有没有排進渲染队列。
- 服務端渲染(SSR):HTML 返回时正文已经在里面。蜘蛛看到的和用戶看到的差別最小,是最省心的做法,代價是服務器压力略高一些。
- 预渲染 / 静態生成:在构建或缓存阶段就把 HTML 生成好,訪問时直接返回。适合内容不频繁變化的頁面。
哪些頁面最容易受影响
不是所有带 JS 的頁面都有問题,風險高的通常是這几類:
- 詳情頁正文、商品描述、文章内容靠接口异步加载;
- 列表頁的連結由 JS 生成,原始 HTML 里没有任何可点的連結;
- 分頁、篩選、排序全部走前端路由,URL 不随狀態變化;
- 首屏之外的区块,比如评论和相關阅讀,延迟加载。
判断标准很直接:看原始 HTML 里有没有核心内容。如果關掉 JS 後正文和内鏈都消失,收錄就會變得不稳定。
動手检查的顺序
- 用“查看網頁源代碼”(不是检查元素)看服務器返回的 HTML,確認标题、正文、主要内鏈是否在里面。
- 用抓取工具或命令行請求一次頁面,和服務端日誌里记錄的响應做對比。
- 在索引覆盖报告里看同類模板的收錄比例,如果整批頁面都停在“已發現但未编入索引”,往往指向同一類技術問题。
- 對比渲染後的頁面和源 HTML,差异越大,風險越高。
折中方案可以怎么做
不一定要把整個站改成 SSR,分层處理往往更現實:
- 核心内容,包括标题、正文、主要連結,走服務端輸出,交互部分保留 JS;
- 给不常變化的頁面做预渲染,或在邊缘节点缓存一份渲染好的 HTML;
- 列表頁至少保證基础連結寫在 HTML 里,前端翻頁只作為增强;
- 關键内容不要只依赖客戶端路由,让每個頁面有獨立、可直接訪問的 URL。
最後补一句:渲染做好只是让内容有机會被看到,能不能留下還要看内容本身是否值得。把技術上该补的补上,等于把原本该有的机會拿回来。