使用 Google 抓取方式,测试 React 驱动的网站 SEO

简介: 本文讲的是使用 Google 抓取方式,测试 React 驱动的网站 SEO,我最近进行了一项测试,它有关客户端渲染的网站是否能避免被搜索引擎的机器人爬取内容。就如我此文所述,React 并不会破坏搜索引擎的索引。
本文讲的是使用 Google 抓取方式,测试 React 驱动的网站 SEO,

我最近进行了一项测试,它有关客户端渲染的网站是否能避免被搜索引擎的机器人爬取内容。就如我此文所述,React 并不会破坏搜索引擎的索引。

现在,我开始实施我的下一个步骤。为了了解 Google 到底能爬取和索引哪些内容,我建立了一个 React 的沙盒项目。

建立一个小型的网页应用程序

我的目标只是建立一个单纯的 React 应用程序,用最少的时间配置 Babelwebpack 和其他一些工具。之后,我会尽可能快地把这个应用程序部署到公网环境。

我也想能在几秒内就把更新部署到生产环境中。

考虑到要实现这些目标,理想的工具是 create-react-app 和 GitHub Pages

有了 create-react-app,我能在 30 分钟内创建一个小型的 React 应用程序。只需要输入这些指令:

create-react-app seo-sandbox
cd seo-sandbox/
npm start

我更改了默认的文本和 logo,修改了一些格式,然后瞧瞧看 —— 一个 100% 由客户端程序渲染的网页完成了,让Googlebot 好好琢磨一下。

你可以访问我 Github 上的项目工程了解更多

部署到 GitHub Pages

create-react-app 非常有用。简直和我心有灵犀。在我执行了 npm run build 指令后,它就识别出我准备计划在 GitHub Pages上发布我的项目,并且告诉我应该这么做:

这是我托管在 GitHub Pages 上的 SEO 沙盒

我把这个网站的名字设定为 "Argelpargel",因为这个词从未被 Google 收录过。

配置 Google 搜索终端

Google 为网站所有者提供了一份免费的套件工具叫做 Google 搜索终端,它可以被用于测试他们的网站。

为了建立这个服务,我为这个网站增加一个称为 property 的东西:

为了证明我就是这个网站的所有者,我不得不向 Google 上传一个特别的文件来找到这个网站。多亏了这个有用的方法 npm rum deploy,让我在很快的时间内就完成了。

Google 眼中我们网站长什么样

环境配置完毕以后,我现在能使用 "Fetch as Google" 工具,用 Googlebot 的方式看看我们的 SEO 沙盒页面:

当我点击 "Fetch and Render" 按钮,就能检查到由 React 驱动的页面上哪一部分能真正被 Googlebot 检索到:

目前我所发现的

发现 #1: Googlebot 以异步加载的形式来阅读内容

我想最先测试的是 Googlebot 会不会对异步渲染的内容进行检索或者爬取。

在页面被加载完毕后,我的 React 应用程序为数据发送了一个 Ajax 请求,并用这些数据更新了部分页面上的内容。

为了模拟这个过程,我为应用程序的组件增加了一个构造器,它通过使用一个 window.setTimeout 方法为组件设定状态。

constructor(props) {
    super(props);
    this.state = {
        choMessage: null,
        faq1: null,
        faq2: null,
        faq3: null
    };
    window.setTimeout(() => this.setState(Object.assign(this.state, {
        choMessage: 'yada yada'
    })), 10);
    window.setTimeout(() => this.setState(Object.assign(this.state, {
        faq1: 'bla bla'
    })), 100);
    window.setTimeout(() => this.setState(Object.assign(this.state, {
        faq2: 'shoo be doo'
    })), 1000);
    window.setTimeout(() => this.setState(Object.assign(this.state, {
        faq3: 'yacketiyack'
    })), 10000);
}

→ 源代码已提交到 GitHub

我使用了 4 种超时时间,10 毫秒, 100 毫秒, 1 秒 和 10 秒。

结果表明,Googlebot 只会在 10 秒的超时时间上失败。但是其他 3 个超时时间都成功了,并且对应的文本块都会显示在"Fetch as Google" 窗体内。

React Router 让 Googlebot 迷了眼

我把 React Router (version 4.0.0-alpha.5) 添加到网页应用程序中,它能创建一个菜单条加载不同的子页面(从他们的文档里直接复制粘贴过来):

太出乎意料了 - 当我点击了 “Fecth As Google”后,我只看到了一片绿色背景的页面:

以客户端渲染的界面使用 React Router 影响了搜索引擎的友好性。但这是否只是 React Router 4 上的问题仍旧需要观察,或者 React Router 3 稳定版本上也存在这样的问题。






原文发布时间为:2016年11月22日

本文来自云栖社区合作伙伴掘金,了解相关信息可以关注掘金网站。
目录
相关文章
|
6月前
|
人工智能 数据可视化 API
10 分钟构建 AI 客服并应用到网站、钉钉或微信中测试评
10 分钟构建 AI 客服并应用到网站、钉钉或微信中测试评
199 2
|
4月前
|
人工智能 测试技术
Google Gemini意外超越OpenAI,跃居第一,但基准测试结果并不能说明全部情况
Google Gemini意外超越OpenAI,跃居第一,但基准测试结果并不能说明全部情况
|
4月前
|
监控 JavaScript 前端开发
如何在实际应用中测试和比较React和Vue的性能?
总之,通过多种方法的综合运用,可以相对客观地比较 React 和 Vue 在实际应用中的性能表现,为项目的选择和优化提供有力的依据。
77 1
|
4月前
|
前端开发 JavaScript 安全
学习如何为 React 组件编写测试:
学习如何为 React 组件编写测试:
63 2
|
4月前
|
前端开发 JavaScript 测试技术
React 模拟测试与 Jest
【10月更文挑战第21天】本文介绍了如何使用 Jest 进行 React 组件的单元测试和模拟测试,涵盖了基础概念、常见问题及解决方案,并提供了实践案例。通过学习本文,你将掌握如何有效地使用 Jest 提高代码质量和稳定性。
169 1
|
5月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
1662 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
4月前
|
资源调度 前端开发 JavaScript
React 测试库 React Testing Library
【10月更文挑战第22天】本文介绍了 React Testing Library 的基本概念和使用方法,包括安装、基本用法、常见问题及解决方法。通过代码案例详细解释了如何测试 React 组件,帮助开发者提高应用质量和稳定性。
152 0
|
5月前
locust网站压力测试软件
locust网站压力测试软件
86 0
|
6月前
|
监控 安全 Linux
如何利用Kali Linux进行网站渗透测试:最常用工具详解
如何利用Kali Linux进行网站渗透测试:最常用工具详解
245 6
|
8月前
|
开发框架 前端开发 JavaScript
ABP框架测试信息---Winform端、动态网站、Vue&Element管理后端等
ABP框架测试信息---Winform端、动态网站、Vue&Element管理后端等

热门文章

最新文章