有些站点為了省抓取预算,會在 robots.txt 里屏蔽 /js/、/css/ 或 /assets/ 目錄。短期看日誌里静態资源請求變少,但搜尋引擎拿到的是一個不完整的頁面。現代搜尋引擎虽然能渲染 JavaScript,前提是能下载到渲染所需的资源。资源被拦,渲染就無從谈起,收錄判断也會受影响。
搜尋引擎渲染頁面的基本流程
蜘蛛先抓取 HTML,然後解析其中引用的 CSS、JS、图片等资源。如果资源可抓取,渲染队列會执行脚本,生成最终 DOM,再提取正文、連結和结构化資料。這個過程和浏览器接近,只是异步、有延迟。资源被 robots.txt 拦住,渲染器只能拿到残缺的頁面。
被拦住之後會發生什么
- 正文可能為空或只有模板文字,算法难以判断頁面主题。
- 站内連結如果由 JS 注入,可能發現不了新 URL。
- 懒加载内容、评论区、價格库存等動態信息缺失。
- 頁面质量信号不足,可能延迟進入索引,或進入後内容不完整。
注意,這里说的是“可能”,不是必然。搜尋引擎有时會尝试其他方式获取资源,但依赖這種兜底並不稳妥。
常见的誤拦與自查方法
先確認 robots.txt 里有没有不小心寫宽的規則。比如 Disallow: / 後面跟了 Allow: /,或者屏蔽了 /*.js 這類通配。也要检查是否有 Disallow: /assets/ 把整站样式脚本一起挡住。
用几個地方交叉驗證
- Search Console 的“網址检查”:看“已抓取的頁面”截图里样式和内容是否正常。
- “抓取統計信息”:看 CSS、JS 的响應碼,是否大量 403 或 404。
- 服務器日誌:過滤 CSS、JS 請求,確認搜尋引擎的 UA 是否能拿到 200。
- 移動设备适合性測試或富媒体測試:這些工具也會渲染頁面,可作參考。
想省抓取预算,该怎么做
屏蔽资源通常省不下多少预算,反而让蜘蛛反复回来確認頁面。更合理的做法是:
- 把關键 CSS、JS 设為可抓取,非關键资源再考虑合並或延迟加载。
- 重要内容優先服務端渲染或静態輸出,减少對 JS 的依赖。
- 用 noindex 控制索引,而不是用 robots.txt 屏蔽整類资源。
- 對于确實不想被渲染的路径,單獨评估,不要一刀切。
抓取和收錄是两件事:抓不到资源,渲染和内容判断就缺依據;而索引狀態最终還要看頁面本身的质量與重复情况。
需要留意的几個细节
如果頁面用 JS 插入 noindex,蜘蛛必须能执行脚本才會看到,否則可能照常收錄。類似地,canonical 如果由 JS 寫入,也可能被忽略。把這些指令放在服務端返回的 HTML 里更稳妥。
另外,屏蔽 JS 後,站内連結的發現路径會變窄。新頁面可能長時間停留在“已發現未编入索引”。這时先別急着提交,检查一下連結是否真的出現在可抓取的 HTML 中。
最後,不同搜尋引擎對渲染的支持程度和时机不一样。對收錄有要求的站点,按最保守的方式设計:让核心内容不依赖 JS 也能看到,资源可抓取,指令寫在服務端。