blog

您现在可以信任Google来抓取Ajax网站吗?

<p>Web设计人员和工程师喜欢使用Ajax构建单页应用程序(SPA)和流行的框架,如Angular和React Pure Ajax实现可以提供平滑,交互式的Web应用程序,更像是一个专用的桌面应用程序使用SPA,一般来说,HTML内容是在初始获取网页时未加载到浏览器中Ajax使用JavaScript动态地与Web服务器通信以创建HTML以呈现页面并与用户交互(有一种称为“服务器端呈现”的技术,其中JavaScript实际上是在服务器上执行的,页面请求是用渲染的HTML返回的</p><p>但是,所有SPA框架都不支持这种方法,并增加了开发的复杂性.APA Ajax站点的一个问题是SEO Google实际上一段时间以来一直在抓取一些JavaScript内容事实上,最近的一系列测试证实了Google能够抓取链接,元数据和通过JavaScript插入的内容然而,使用纯SPA Ajax框架的网站在历史上经历了SEO的挑战在2009年,谷歌提出了一个使Ajax可抓取的解决方案该方法要么创建“转义片段”URL(丑陋的URL),要么最近,干净页面上带有Meta =“fragment”标记的网址转义的片段网址或元片段标记指示Google外出并获取已执行所有JavaScript并具有Google可以解析的完整HTML的页面的预呈现版本和索引在这个方法中,蜘蛛提供了一个完全不同的页面源代码(HTML vs JavaScript)随着Google抓取JavaScript的消息,许多网站决定让Google抓取他们的SPA Ajax网站一般来说,这一点并不是很好成功在过去的一年里,我咨询了几个带有Ajax Angular实现的网站Google取得了一些成功,Google缓存中大约30%的网页都是完全呈现的其他70%的人都是空白一个受欢迎的食品网站转向Angular,认为谷歌可以抓住它们他们失去了大约70%的有机流量并且仍在从崩溃中恢复最终,这两个网站都预先渲染了HTML快照,推荐当时的Ajax抓取解决方案然后,在10月14日,谷歌表示:我们不再推荐我们在2009年制作的AJAX爬行提案请注意,他们仍在支持他们的旧提案(已经有一些文章宣布他们是不再支持它,但事实并非如此 - 他们根本不再推荐这种方法)在弃用旧推荐时,他们似乎在说他们现在可以抓取Ajax然后,在宣布后一周,一个新的客户端推出的网站让我查看它这是一个Angular网站,再次是一个SPA Ajax实现在检查谷歌的索引和缓存后,我们看到一些部分索引的页面没有所有的连续抓取我抓住了我重申我之前建议的使用HTML快照或渐进增强这个网站是用Angular构建的,它还不支持服务器端渲染(同样,在这种情况下,服务器最初呈现一个页面来提供HTML文档),因此渐进式增强将难以支持,HTML快照仍然是最佳解决方案她回答说,“但为什么呢</p><p>我读过的所有内容都告诉我Google可以抓取Ajax“他们可以吗</p><p>让我们深入了解有关Ajax的新建议在解释为什么他们弃用旧建议时,他们说(强调我的):我们通常能够像现代浏览器一样呈现和理解您的网页很多人可能会很快得出结论,他们现在可以毫无问题地抓取Ajax但是看看语言:“一般都能”</p><p>您是否会因为Google“通常能够”理解您的网页而知道您的业务收入</p><p>难道我只是在挑选语义吗</p><p>让我们进一步审查公告,他们在公告中稍后陈述了Ajax:由于我们2009年提案的假设不再有效,我们建议遵循渐进式增强的原则他们没有在公告中说明,而是通过推荐渐进式增强功能(为不支持JavaScript的浏览器加载一些HTML),它们似乎含蓄地说:“不要指望我们抓取您的JavaScript“为什么谷歌可以一直抓取SPA Ajax网站,为什么推荐这种方法</p><p>我担心我可能会过度分析谷歌的话,但随后...... 10月27日(谷歌宣布后不到两周),John Mueller在他的网站管理员中心环聊上确认Google确实仍然存在Ajax问题您可以查看交换大约在1:08:00左右进入视频,其中有一个与特定Angular实现相关的问题:他们仍然在渲染方面遇到问题,他们希望随着时间的推移会变得更好John建议采取一些措施来帮助调试问题最终,他建议使用HTML快照,直到Google在Ajax上变得更好(是的,刚刚正式弃用的方法)渐进式增强服务器端渲染将是渐进式增强所必需的,Angular尚不支持它但是,即将推出的Angular 20将会支持服务器端呈现React确实支持今天的服务器端呈现然而,这比简单地创建HTML快照要多得多你需要制作确保您呈现任何必需的链接,以便Google可以抓取并索引加载到页面中的其他内容但是,对于使用Ajax框架的网站,这将是我推荐的方法(当然,这是Google的推荐方法)预渲染HTML快照再次,如果您已经听说过或读过谷歌不再支持这种方法,请不要混淆他们将在可预见的将来继续支持它们他们不再推荐它这种方法有效;然而,编写代码来预渲染并提供快照并不是一件容易的事</p><p>好消息是,有一些供应商,比如prerenderio,他们会以相对较低的成本为你工作</p><p>这可能是最简单的方法方法不理想为爬虫与浏览器(HTML与JavaScript)提供不同的源代码可能会有问题它可以被认为是一种隐形技术,而且机器人的服务并不一定很明显</p><p>监控Google的缓存以确保他们没有得到错误的页面但是,如果你使用的平台不支持服务器端渲染,那么这可能是你唯一的解决方案即使我看到谷歌一直在抓取Ajax网站的证据,我仍然会保持警惕完全呈现页面需要更多的资源和更多的时间,而不是简单地提供HTML</p><p>具有数十万或数百万页面的网站会发生什么</p><p>它将如何影响抓取预算</p><p>抓取率是否保持一致</p><p>在推荐这种方法之前,我宁愿等待并看到有力的证据表明Google可以并且一直抓取大型纯Ajax单页面应用程序,对抓取率,索引和排名没有负面影响请分享您自己的经验本文中表达的观点是客座作者的那些,

查看所有