1. 您的位置:首页 > seo技术 >内容

诊断基于JavaScript的网站的优先级

在过去的20年中,Google的搜索引擎发生了很大变化。 如果我们从整体上看技术和Web开发,我们可以看到变化的步伐非常惊人。

这个1998年以来的网站虽然内容丰富,但并不吸引人或易于使用:

现代网站不仅看起来更好,而且还具有强大的功能,例如推送通知,部分脱机工作以及瞬间加载。

但是,如果我们希望准确无误,则应使用术语“应用程序”而不是“网站”,因为网站是交互式的,动态的并且使用JavaScript构建。

JavaScript改变了游戏规则

最长的时间是Google无法执行JavaScript,但是在2015年,该公司在处理JavaScript方面迈出了一大步。

需要强调的是,搜索引擎的发展要比网络开发领域的发展慢得多,这可能就是为什么Google仍然是唯一可以执行JavaScript的搜索引擎的原因。

最初,当使用仅由静态超文本标记语言(HTML)组成的网站构建万维网时,Google的任务很简单:

向服务器发出请求→获取静态HTML响应→索引页面

我知道这是一个非常简单的过程描述,但是我想展示一下处理网站的时间和处理网站的区别。

当开发人员开始使用JavaScript(JS)在网站上添加交互性,然后当使用Javascript创建整个网站时对JavaScript的依赖变得更大时,问题就加速了。

JavaScript应用和网站对Google构成挑战,因为在将初始请求发送到服务器后,Googlebot会收到一个空的或几乎为空的HTML文件。 JS执行后,将添加内容,图像和链接。

Google通过尝试呈现他们访问的几乎所有页面来解决了该问题。 因此,现在,该过程大致如下所示:

向服务器发出请求→获取静态HTML响应→将其发送到索引器→呈现页面→ 编制索引并将提取的链接发送到Googlebot→Googlebot可以抓取下一页。

JavaScript执行增加了许多效率低下和延迟爬网,呈现和索引过程的原因,因为:

  • Googlebot的抓取速度减慢了。 它在JS网站的源代码中看不到超链接,因此它需要等待索引器呈现页面,然后将提取的URL发送回去。
  • 执行JavaScript需要许多资源。 即使对于Google的数据中心来说,它也已经筋疲力尽。

尽管存在这些障碍,但由于对React,Vue.js或Angular等开源框架的兴趣持续飙升,我们需要为开发动态JS应用程序的蓬勃发展做好准备。 越来越多的网站将使用JavaScript构建。 因此,作为SEO,我们需要能够在使用它的网站上发现问题。

正确的方法

在开始更深入地研究JavaScript和与之相关的一些混乱之前,让我们看一下三个方面,这些方面将调整我们分析网站的方法:

答:问题的规模是多少?

我们需要了解并明确描述使用JavaScript构建的网站(应用程序)(例如单页应用程序(SPA))和对JavaScript的部分依赖关系。 以下是一些可能的情况,以及如何分辨SPA构建的内容和部分依赖关系:

  • 没有JavaScript依赖项。 访问我们的网站并在浏览器中关闭JS-没什么改变。
  • 部分JS依赖关系。 访问Angular.io网站并在浏览器中关闭JS,主导航不起作用(但是链接在文档对象模型[DOM]中可用,我将在后面讨论)。
  • 有意义的JS依赖关系。 访问AutoZone并关闭JS —主导航可能不起作用,并且链接可能在DOM中不可用。
  • 完整的JS依赖关系。 访问YouTube,关闭JS,然后注意所有内容都消失了!

您可能已经猜到,如果您对JavaScript有部分依赖性,那么解决的问题就更少了。

B.网站建在哪里?

静态HTML网站建立在您的服务器上。 在收到Googlebot(以及用户)的初始请求后,它会收到一个静态页面作为响应。

动态Web应用程序(DWA)内置在浏览器中,因此在发出初始请求后,我们会收到一个空的或几乎空的HTML文件,并且使用JavaScript以异步方式加载内容。 从更大的角度来看,当涉及到JS和搜索引擎优化(SEO)的问题时,我们可以假定客户端渲染是真正的坏蛋。

C. Google有什么限制?

不久前,谷歌透露了它是如何渲染网站的:共享的网络渲染服务(WRS)负责渲染页面。 它们的背后是无头浏览器,该浏览器基于Chrome 41于2015年推出,因此有点过时了。 Google使用使用了三年的浏览器这一事实对呈现现代Web应用程序具有真正的影响,因为它不支持现代应用程序使用的所有当前功能。

Google的工程师Eric Bidelman确认他们知道Google对JS的限制。 根据非官方的说法,我们可以预期Chrome 41会在2018年底更新到最新版本。

要深入了解受支持和不受支持的内容,请访问Caniuse.com,并将Chrome 41与最新版本的Chrome进行比较。 列表很长:

处理资源

超时是导致JS和SEO难以匹敌的下一件事。

JavaScript应用程序通常非常沉重,并且Google资源有限。 想象一下,就JavaScript而言,Google需要渲染每个页面才能看到内容。 下面的示例显示了JS执行的繁重程度。

如果您具有相同大小的JS文件和图像文件,则将看到解析大约需要2秒钟,然后执行JavaScript大约需要1.5秒。

Google需要处理大量数据,因此需要合理地管理其处理资源。 万维网由十亿多个网站组成,并且每天都在增长。 下图显示,过去五年中,桌面版页面的中位尺寸增长了近100%。 网站移动版本的适当指标增加了250%!

JavaScript网站的自然后果是延迟了这些网站的爬网,索引和排名。

准备和有用的资源

从事技术SEO的SEO必须注意细节。 就JavaScript网站而言,我们需要为需要解决的棘手问题做好准备,并且我们必须了解,我们不能总是依赖于通用和众所周知的规则。

Google知道SEO和开发人员在理解搜索行为时遇到了问题,他们正在努力为我们提供帮助。 以下是Google提供的一些资源,您应该遵循这些资源并进行检查,以帮助解决您可能遇到的任何JS问题:

  • 网站管理员趋势分析师约翰·穆勒(John Mueller)。
  • 网站管理员趋势分析师Gary Illyes。
  • 工程师Eric Bidelman。
  • Google搜索论坛中的JavaScript网站。
  • 视频:John Mueller提供的“ SEO最佳实践和现代网站要求”。
  • 视频片段:来自Google I / O 2018的“提供易于搜索的JavaScript网站”。

诊断JavaScript驱动的网站问题

现在我们知道了Google的局限性,让我们尝试在JavaScript网站上发现一些问题并寻找解决方法。

Google看到了什么?

三年前,谷歌宣布能够渲染和理解现代浏览器之类的网站。 但是,如果我们查看渲染JS网站上的文章和评论,您会发现它们包含许多警告性词,例如:“可能”,“一般”和“并非总是”。

这应该强调一个事实,尽管Google在JS执行方面越来越好,但仍有很大的改进空间。

源代码与DOM

源代码是Googlebot进入页面后看到的内容。 这是未将JS集成到代码中的原始HTML。 要记住的重要一件事是Googlebot不呈现页面。

Googlebot是搜寻器,因此它的工作是浏览页面,从源代码中提取元素并将其发送到索引器。 文档对象模型(DOM)是网站的呈现版本,这意味着原始HTML已通过JavaScript进行了更改,结构化和组织化。

“检查元素”显示文档对象模型。 渲染由Web渲染服务完成,该服务是Google索引器的一部分。 这里有一些重要的注意事项:

  • 爬网时会考虑原始HTML。
  • 索引时会考虑DOM。

JavaScript网站分为两波编入索引,这使整个索引编制过程变得截然不同:

  • 第一波:Google仅提取元数据并根据此信息对URL进行索引。
  • 第二波:如果Google有备用资源,它将渲染页面以查看内容。 它可以为页面重新索引并合并这两个数据源。

请记住,在第二次索引编制浪潮中,如果原始索引元素已被JavaScript更改,则Google不会更新它们。 如果您在JavaScript中添加rel =“ canonical”标签,则Google不会将其提取。

但是,最近约翰·穆勒(John Mueller)表示,如果Google在呈现页面时卡住,则可能会使用原始HTML进行索引。

即使您看到一个特定的URL已被索引,也不意味着该内容是由索引器发现的。 我知道这可能会令人困惑,所以这里有一个小备忘单:

  1. 要查看发送到Googlebot的HTML,请转至Google Search Console并使用“提取并渲染”工具。 在这里,您可以访问原始HTTP响应。
  2. 要查看页面的渲染版本,您也可以使用“获取并渲染”工具。
  3. 要查看由Web渲染服务(WRS)为台式机设备构建的DOM,请使用Rich Results Test。 对于移动设备,请使用“移动设备友好”测试。

Google正式确认,我们可以依靠以下两种方法来检查Google如何“查看”网站:


比较源代码和DOM

现在,该分析代码和DOM了。

第一步,在可索引性方面比较它们,并检查源代码是否包含:

  • 元机器人指令如索引规则。
  • 规范标签。
  • Hreflang标签。
  • 元数据。

然后查看它们是否与网站的呈现版本兼容。

要发现差异,可以使用Diff Checker之类的工具,该工具将比较两个文件之间的文本差异。

使用Diff Checker,从Google Search Console获取原始超文本传输​​协议(HTTP)响应,并将其与上述第3点中提到的工具(Rich Results测试和Mobile-Friendly测试)与DOM进行比较。

JavaScript可能会修改某些元素,并且Google可能要遵循两个不同的说明。

Googlebot无法滚动

在查看DOM时,还值得验证依赖于单击,滚动和填写表单等事件的元素。

JavaScript允许在用户交互后加载其他内容,链接和图像。 Googlebot不会滚动或单击,因此,如果某些内容需要显示操作,则Google不会发现它。

两次索引编制及其后果

回到我之前提到的那两个浪潮,Google承认仅在第一波索引中才考虑元数据。 如果源代码不包含机器人指令,hreflangs或规范标签,则Google可能不会发现它们。

Google如何看待您的网站?

要检查Google如何查看您网站的渲染版本,请转到Google Search Console中的Google抓取方式工具,然后提供您要检查的网址,然后点击抓取并呈现。

对于复杂或动态的网站,仅验证网站的所有元素是否都位于其位置是不够的。

Google正式表示Chrome 41位于Fetch and Render工具的后面,因此最好下载并安装该浏览器的确切版本。

安装到个人计算机(PC)后,您可以与网站进行一些交互,导航到其他部分,并检查由JavaScript触发的控制台中的错误。 移动友好测试中的一项新功能还使得可以在JavaScript控制台中查看JavaScript错误。

我想提及一些常见和琐碎的错误,以避免:

  • 在诊断渲染功能丰富的JavaScript的网站时,请不要查看Google的缓存。 它没有提供有意义的信息,因为缓存显示的是由您的浏览器呈现的Googlebot看到的RAW HTML。 JS网站的源代码仅包含几行代码,一些指向脚本的超链接。 实际内容在JavaScript执行后加载。
  • 不要在robots.txt中阻止JavaScript资源; 它会阻止正确的渲染(我知道这很明显,但是仍然会发生)。

内部连结

内部链接是使网站可爬网的唯一方法。 由于JavaScript网站的源代码(通常)不包含链接,因此整个抓取过程会延迟。 Googlebot需要等待索引器呈现页面并将发现的链接发回。

诊断JS网站的关键要素是检查链接是否放置在DOM中。 源代码不必包含链接,但是如果DOM没有链接,则不会发现链接。 如果主导航是使用JavaScript构建的,这可能会产生巨大的影响。

分析大型菜单时要小心。 有时,它们充斥着一些花哨的功能,这些功能并不总是对SEO有利。 这是约翰·穆勒(John Mueller)提供的有关如何查看导航是否适用于Google的提示:

同时注意“更多加载”分页和无限滚动。 这些元素也很棘手。 他们以平滑的方式加载了其他内容,但是这些内容是在与网站互动之后发生的,这意味着我们不会在DOM中找到该内容。

在Google I / O会议上,汤姆·格林威(Tom Greenway)提到了两个可以解决此问题的解决方案:您可以预加载这些链接并通过CSS隐藏它们,或者可以提供指向后续页面的标准超链接,因此该按钮需要使用序列中的下一个内容。

下一个重要元素是嵌入内部链接的方法。 Googlebot仅遵循标准的超链接,这意味着您需要在代码中查看如下所示的链接:(不带空格)

<a href =“ http://www.domain.com”>文本< / a>

如果您看到的是OnClick链接,则它们看起来像这样,将不会被发现:

<div OnClick =” location.href =” http://www.domain.com”>文本</ div>

因此,在浏览源代码和DOM时,请始终检查以确保在内部链接上使用正确的方法。

网址-简洁而独特

为内容建立索引的基本规则是为每条内容提供干净且唯一的URL。

很多时候,基于JS的网站在URL中使用井号。 Google明确指出,在大多数情况下,搜寻器不会发现此类URL。

在分析网站时,请检查该结构不是使用以下URL构建的:

网址中#号之后的所有内容都会被Google修剪和忽略,因此不会为内容建立索引!

超时时间

没有人喜欢延迟渲染,即使是Google。 据说Google最多需要等待5秒才能获取并执行JavaScript(请注意,5秒规则是基于观察结果,尚未得到Google的确认)。 我认为Google必须限制执行的最长时间,因为渲染是一个非常消耗资源的过程。

不幸的是,诊断超时问题并不容易。 如果我们不能足够快地提供内容,则可能无法为内容建立索引。

对于JavaScript网站,您需要等待一段时间才能加载其他元素,甚至整个部分。 加载程序显示将出现一些新内容:

如果按时执行JavaScript,则Web呈现服务可以正确呈现页面,并且可以使用JavaScript索引内容。 但是,如果我们查看搜索结果,就会发现加载程序已建立索引。 啊!

我们如何发现这些问题? 我们可以使用“尖叫青蛙”之类的工具来抓取网站,并将延迟设置为5秒。 在渲染模式下,您可以查看渲染版本是否一切正常。

不要依赖于“提取和渲染”工具中的检查延迟。 最多可能需要等待2分钟才能使用JavaScript,因此比Google的Indexer耐心得多。

约翰·穆勒(John Mueller)建议,我们可以检查Google是否在“移动友好”测试中按时呈现了该页面,并且该网站是否可以正常工作,因此可以进行索引。

在分析网站时,请查看网站是否实施了人为的延迟,例如加载程序,这会导致等待内容交付:

没有理由设置类似的元素; 在索引无法发现的内容方面可能会产生巨大的影响。

索引编制

如果内容未编入索引,您将一无所获。 这是最容易检查和诊断的元素,也是最重要的!

使用site:domain.com命令

检查索引最有用的方法是众所周知的查询:

网站:域“您网站上几行内容”

如果您搜索一些内容并在搜索结果中找到它,那就太好了! 但是,如果找不到,请卷起袖子开始工作。 您需要找出为什么它没有被索引!

如果要进行复杂的索引分析,则需要检查域中可用的不同类型页面和不同部分中内容的各个部分。

延迟加载图像

Google表示加载“惰性”图像可能存在问题:

如果图像加载缓慢,请在您提供的图像上添加标记,如果关闭JavaScript,这些标记将变为可见。

使惰性内容可被Google发现的第二种选择是结构化数据:

包起来

不要将本文用作JS网站的唯一清单。 尽管这里有很多信息,但还不够。

本文旨在作为深入分析的起点。 每个网站都是不同的,并且当您考虑到独特的框架和开发人员的个人创造力时,不可能仅使用清单来完成审核。


本文中表达的观点是来宾作者的观点,不一定是Search Engine Land。 工作人员作者在此处列出。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。如若转载,请注明出处:http://www.botadmin.cn/sylc/10036.html