发布于 2025-12-08 5 阅读
0

如何让 25 万以上的页面被 Google 收录 1. 输入 SSR 2. 输入动态 Sitemap 3. 输入删除 JavaScript 结论

如何让 25 万以上的页面被 Google 收录

1. 进入SSR

2. 输入动态网站地图

3. 输入删除 JavaScript

结论

创建Devsnap 的时候,我非常幼稚。我使用 create-react-app 作为前端,用 Go 和 GraphQL 作为后端。一个典型的带有客户端渲染的 SPA 应用。

我知道对于这种网站,我会让 Google 索引很多页面,但我并不担心,因为我知道 Google Bot 现在已经在渲染 JavaScript 了,而且会很好地索引它

哦天哪,我错了。

一开始一切都很顺利。谷歌一点一点地索引页面,我获得了第一批自然流量。

首次索引

但不知何故,索引速度真的很慢。谷歌每分钟只能索引大约2个页面。我以为过一段时间速度会快起来,但事实并非如此,所以我需要做点什么,因为我的网站依赖谷歌来快速索引大量页面。

1. 进入SSR

我最初实施服务器端渲染 (SSR) 是因为偶然看到一位 Google 员工说过,客户端渲染的网站需要被索引两次。Google 机器人首先会查看初始 HTML,并立即跟踪它能找到的所有链接。第二次,是在它将所有内容发送到渲染器之后,渲染器返回最终的 HTML。这不仅对 Google 来说成本高昂,而且速度也很慢。因此,我决定让 Google 机器人在初始 HTML 中包含所有链接。您可以在这篇精彩的文章中找到更多关于此主题的深入信息。

Google Bot 索引周期

我就是按照这个很棒的指南做的。我以为实现 SSR 需要几天时间,但实际上只花了几个小时,而且效果非常好。

使用 SSR 进行索引

如果没有 SSR,我的索引页面数量就会停留在 20k 左右,但现在它正在稳步增长到 >100k。

但它仍然不够快

Google 并没有收录更多页面,但速度仍然太慢。如果我想让这 25 万个页面被收录,并快速发现新的招聘信息,我需要做得更多。

2. 输入动态网站地图

对于如此规模的网站,我认为我必须以某种方式引导 Google。我不能仅仅依靠 Google 一点一点地抓取所有内容。因此,我用 Go 语言创建了一个小型服务,每天创建两次新的 Sitemap 并将其上传到我的 CDN。

由于站点地图限制为 50k 页,因此我不得不将其拆分并仅关注具有相关内容的页面。

网站地图索引

提交后,Google 立即开始加快抓取速度。

但它仍然不够快

我注意到 Google 机器人访问我网站的速度变快了,但每分钟也只有 5-10 次。由于我实施 3 号方案后一天才开始,所以我无法与 1 号方案进行索引对比。

3. 输入删除 JavaScript

我在想为什么它还是这么慢。我的意思是,其他网站也有很多页面,但它们也设法做到了。

那时我才想到了第1点。Google为每个网站分配一定量的索引资源是合理的,而我的网站仍然非常昂贵,因为即使Google看到了初始HTML中的所有链接,它仍然必须将其发送到渲染器以确保没有任何剩余的需要索引的内容。当JavaScript仍然剩余时,它根本不知道所有内容都已经包含在初始HTML中了。

所以我所做的就是删除了用于机器人的 JavaScript。如果不知道它的作用,请不要直接使用这段代码。请参阅下文的 JSON-LD。

if(isBot(req)) {
    completeHtml = completeHtml.replace(/<script[^>]*>(?:(?!<\/script>)[^])*<\/script>/g, "")
} 

部署该更改后,Google Bot 立即变得疯狂。它现在抓取 5-10 个页面——不是每分钟——而是每秒。

Google Bot 抓取速度

Google 抓取统计数据

Google 索引结果

这是目前的结果。由于我最近才实施这些更改,仍然有很多页面已被抓取,但尚未被索引(灰色条)。不过,我对结果非常满意。

在 Google 索引所有页面后,性能也上升了很多。

Devsnap 性能

JSON-LD

别删掉它!我这里 JSON-LD 是加在上面代码片段后面的。所以要格外小心,不要把它删掉。

结论

如果您想让 Google 索引一个大型网站,只需向其提供最终的 HTML 并删除所有 JavaScript(当然 JSON-LD 除外)。

鏂囩珷鏉ユ簮锛�https://dev.to/kunnendavid/how-to-get-250k-pages-indexed-by-google-57ep