SEO 百科
渲染
本页目录
渲染指的是搜索引擎像浏览器那样把网页跑一遍,执行其中的 JavaScript,从而看到最终生成的内容[2][4]。这一步既不属于纯粹的抓取,也不属于纯粹的索引,而是夹在两者之间:抓取拿到的是初始 HTML,渲染之后才能看到由脚本生成的那部分。
渲染的时机
对 JavaScript 网站,搜索引擎的处理流程分三个阶段[2]:
- 抓取
- 呈现
- 编入索引
渲染排在中间,用的是常青版 Chromium[2];官方在另一处也把它描述成用最新版 Chrome 渲染网页,并运行网页上的 JavaScript[3]。
初始 HTML 里是否包含内容,决定了渲染的分量。服务器端渲染的网页,HTTP 响应里的 HTML 就带着全部内容,解析一遍就可以;而有些 JavaScript 网站用的是应用外壳模型,初始 HTML 里没有实际内容,必须执行 JavaScript 之后才看得到[2]。
渲染队列
并不是每个抓到的网页都会立刻渲染。Googlebot 会把所有返回 200 状态码的网页加入渲染队列,除非 robots meta 标记或 HTTP 标头告诉它不要索引这一页[2]。比如 <meta name="robots" content="noindex">,这一行就是告诉引擎不要索引这一页的标记。
排队等待的时间并不固定。可能只有几秒,也可能长得多,要看搜索引擎的资源什么时候允许[2]。这一条也解释了一种现象:同一个页面,抓取时拿到的版本和最终收录的版本,内容偶尔会不一致。
渲染与索引
渲染完成之后,Googlebot 会再次解析渲染后的链接 HTML,把新发现的网址加入抓取队列[2]。也就是说,由 JavaScript 生成的链接同样能被发现。
索引用的也是渲染后的 HTML[2]。所以脚本生成的内容,只要渲染时能看到,就有机会被编入索引;反过来,渲染时看不到的部分,对索引而言等于不存在。
被屏蔽页面与 JavaScript
还有一条容易被忽略:网页或文件一旦被屏蔽,搜索引擎就不会渲染其中的 JavaScript[2]。因为 Googlebot 在抓取之前会先读 robots.txt,如果某个网址被标记为禁止抓取,它就会跳过这个请求[2]。
也就是说,robots.txt 挡掉的不只是一个请求,还包括这个页面上脚本可能带来的一切。
JavaScript 的代价
即便渲染能做,官方仍然建议采用服务器端渲染或预渲染[1][2]。理由有两条:
- 能让用户和抓取工具更快地看到网站内容。
- 并非所有漫游器都能运行
JavaScript。
这两条说的其实是同一件事。把内容交给 JavaScript 生成,就等于把可见性托付给一种未必人人都具备的能力。
附录
参见
参考资料
官方(境外)
- 《bingbot Series: JavaScript, Dynamic Rendering, and Cloaking》,Bing 网站管理员博客。
- 《了解 JavaScript SEO 基础知识》,Google 搜索中心。
- 《关于 Google 搜索运作方式的深度指南》,Google 搜索中心。
第三方
- 《Google Explains Rendering and Impact on SEO》,Search Engine Journal。
外部链接
无。