常见问题

专注SEO排名技术研发,联系我们获得技术支持!

一个单页应用程序SEO友好吗

2022-12-05  浏览:0

  一个臭名昭着的单页面应用(SPA)开发领域是SEO。根据您的要求,搜索引擎抓取客户端呈现的内容要么完全正常,只要它是同步的,或者根本不是很好。

  由于所有这些相互矛盾的建议引起的混乱,我经常看到问题“我的VueSPA是否适合SEO?”来自像Vue.jsDevelopersFacebook小组,Vue.js论坛和Reddit上的r/vuejs这样的地方。

  在本文中,我们将挑战流行的观点,做一些基本的测试,并尝试总结一些明智的建议,建立SEO友好的SPA。

  单页面应用程序的标准实现为浏览器提供了一个页面“shell”,而不包含任何有意义的内容。而是使用AJAX从服务器按需加载内容,然后通过JavaScript将其添加到页面。

  这允许用户在没有页面刷新的情况下查看SPA站点的“页面”,从理论上改进UX。

  虽然这种架构适用于在浏览器中查看页面的人类用户,但搜索引擎爬虫呢?抓取工具可以运行JavaScript吗?如果是这样,他们会在抓取页面之前等待AJAX调用完成吗?

  重要的是要知道这一点,因为它可以确定网站的内容是否可以被搜索引擎索引,同样重要的是,它的内容排名是多少。

  由于Google是全球领先的搜索引擎,因此我们的调查应专注于Google搜索引擎抓取工具Googlebot。

  在网络发布初期,Googlebot只会抓取页面中提供的静态HTML。然而,2014年宣布,Googlebot现在会尝试在开始抓取之前呈现JavaScript。

  为了帮助调试渲染经JavaScript修改的页面的任何问题,Google为网站管理员提供了Google抓取工具,该工具会显示Googlebot在特定网址上看到的内容的快照。

  一个常见的误解是Googlebot不会抓取异步JavaScript。这篇文章在破坏它方面做得很好。TLDR;Googlebot会等待至少20秒才能完成异步调用!

  典型的Vue.jsSPA示例是VueHackerNewsClone2.0。这是Vue团队提供的一个开源项目,用于演示Vue的全部功能和有效的设计模式。

  我将此应用程序部署到Heroku实例并通过FetchAsGoogle运行。在下图中,左侧的屏幕截图显示了Googlebot如何看到它,右侧的屏幕截图显示了用户将如何看到它。它们似乎完全相同。

  VueHackerNewsClone2.0的一个关键特性是服务器端渲染(SSR)。这意味着,与更基本的SPA不同,每个页面的内容都在服务器上呈现,并在每次页面加载时提供给浏览器,就像它是静态HTML一样。

  但是,我们试图了解的是Googlebot如何看待客户端呈现的内容。出于这个原因,我关闭了SSR并再次运行测试:

  即使只提供客户端渲染,Googlebot也能轻松查看内容。我还等了几天才看看Google是否已将该应用编入索引。它有过:

  虽然这个测试似乎满足了对客户端呈现内容的任何担忧,但是有一些原因让你不应该对它充满信心:

  与所有JavaScript引擎一样,Googlebot也不是绝对可靠的,并且可能存在无法呈现页面的边缘情况。仅仅因为页面可以被索引,并不意味着它将排名很好。

  Googlebot在渲染VueHackerNews方面没有任何问题。但我们不应该认为它可以使所有JavaScript完美无瑕。谷歌2014年关于JavaScript渲染的公告明确表示不会有任何保证,尽管大多数开发人员似乎忽略了这一点。

  就像浏览器一样,Googlebot必须拥有一个JavaScript引擎,其中包含已实现的Web标准和ES功能的特定子集,以及它们如何实现的特定特性。

  根据该视频来自谷歌开发者阿迪·奥斯马尼和罗布·多德森(发布2017年11月),Googlebot在目前基于Chrome的41有很多新的API,因为41版已发布,如果你使用的任何人,想必Googlebot无法呈现和索引您的网页。

  您可能认为这是一个微不足道的问题,因为您无论如何都需要为旧浏览器转换或填充此类功能。但重点是,您不应该盲目相信每个搜索爬虫正确运行您的应用程序,就像您不会盲目相信您的应用程序被每个浏览器正确运行一样。

  不要忘记“SEO”中的“O”代表“优化”。被索引是一个搜索引擎是不够的;我们希望我们的网站排名也很好。FetchAsGoogle告诉我们页面是如何被看到的,而不是页面与竞争对手的对比情况。

  关于SEO与React的文章有一个有趣的评论:网络爬虫比SEO专家BarryAdams所做的更聪明。关于搜索引擎如何对SPA进行排名的话题,他说:

  “当你在没有服务器端渲染的情况下使用React时会发生什么情况,爬虫会在第一页停止,因为它看不到任何要跟随的超链接...它使爬行过程非常缓慢和低效。这就是为什么网站基于React(以及类似的JavaScript平台)构建在Google上的表现比主要为爬虫程序提供纯HTML的网站更糟糕......纯HTML网站可以非常有效地被抓取,新添加和更改的内容将被更快地抓取和索引,并且Google可以更好地评估此类网站上各个网页的抓取优先级。“

  虽然他没有为此提供任何证据,但它似乎与其他排名决定者的理念一致,如页面速度。

  最重要的是,如果SEO很关键,您不能依赖SPA的客户端呈现,并且必须确保您的网页中包含内容。

  但这并不意味着您需要放弃SPA架构。有两种技术,服务器端渲染和预渲染,它们都可以实现预期的结果。

  服务器端呈现(SSR)是Web服务器作为服务器请求/响应周期的一部分呈现页面的位置。在Vue.js和其他类似框架的情况下,这是通过针对虚拟DOM执行app来完成的。

  虚拟DOM的状态将转换为HTML字符串,然后在发送到客户端之前注入到页面中。当页面到达浏览器时,JavaScript应用程序将无缝地挂载在现有内容上。

  SSR保证您的页面将是爬虫友好的,因为无论爬虫如何运行JavaScript,或者甚至是否运行JavaScript,页面内容都是完整的。

  SSR有其缺点:

  您需要将代码设计为“通用”,即它必须在浏览器和基于服务器的JavaScript环境中工作。这意味着任何期望浏览器API和对象window可用的代码都不起作用。您的应用将在每次向服务器发出请求时运行,增加额外的负载并减慢响应速度。缓存可以部分缓解这种情况。实施SSR既复杂又耗时,因此项目需要更多的开发人员时间。它只适用于Node.js后端。SSR可以使用非节点后端完成,例如,通过使用PHP扩展v8js,但是这样的解决方案非常有限。

  如果您希望在Vue.jsSPA中实现服务器端呈现,则应从官方指南开始:Vue.js服务器端呈现指南。我还写了一篇关于使用Laravel和Vue.js实现SSR的指南:使用Laravel和Vue.js2.5进行服务器端渲染。

  提示:像Nuxt.js这样的框架带有开箱即用的服务器端渲染。

  如果由于上述原因之一而无法使用SSR,则还有另一种方法:预渲染。使用此方法,您可以在开发环境中使用无头浏览器运行应用程序,对页面输出进行快照,并使用此快照将HTML文件替换为服务器的响应。

  它与SSR的概念几乎相同,只是它是在部署前完成的,而不是在实时服务器上完成的。它通常使用像Chrome这样的无头浏览器来执行,并且可以与Webpack,Gulp等合并到构建流程中。

  预呈现的优点是它不需要Node.js生产服务器,也不会向生产服务器添加负载。

  然而,预渲染也有缺点:

  它对于显示更改数据的页面不起作用,例如,VueHackerNews。它不适用于具有用户特定内容的页面,例如具有用户个人详细信息的帐户页面。然而,这些类型的页面对SEO不太重要;你通常不希望索引的帐户页面。您需要单独预渲染应用中的每条路线,这可能会占用大量网站的大量时间。

  如果你热衷于在Vue.js应用程序中实现预渲染,我已经在这个博客上写了一个指南:Pre-RenderAVue.jsApp(带节点或Laravel)

  提示:为prerenderingforSEO可以从prerender.io作为服务购买

  许多开发人员看到谷歌2014年关于JavaScript渲染的公告是对SEO内容的SEO担忧的终结。实际上,无法保证Googlebot会正确呈现网页,如果确实如此,它仍然可能会将网页排名低于竞争网站中的静态HTML网页。

  我的建议:如果您打算使用SPA架构,请确保提供服务器呈现或预呈现的页面。

声明:免责声明:本文内容来源于互联网,本网站不拥有所有权,也不承认相关法律责任。
  • 1865692

    累积优化关键词

  • 93%

    +

    首页上词率高达90%+

  • 183W

    +

    183W+独家IP资源

  • 3000

    +

    与3000余家企业客户携手

提供保姆式的SEO优化排名服务,独家研发排名技术,源头技术厂家,快速上首页,帮您获取更多客户资源!

联系我们

TG : @pagoda1993

公司:

九狐科技技术有限公司

地址:江西省南昌市南昌县小蓝国家经济技术开发区汇仁大道266号