为什么搜索引擎不能直接索引Ajax网站?



我理解作为一个(GWT开发人员),Ajax网站动态呈现页面,例如,我制作的网站是单页,包含标签来呈现"页面",如"主页","关于我们","产品"等。

然而,这些页面通常与散列(#)合并,如果我访问说,http://example.com#HomePage#Products,它将呈现页面和内容"最终"…

现在,如果我把我的产品页面网站在我的可抓取的静态博客网站,例如:http://example.com#Products,如果我点击这个网站,那么我的网站将呈现产品后,最终一些ajax调用。

然而,如果我从浏览器检查网站的"页面源",页面仍然是相同的html"从ajax内容空";这是ajax网站不能被索引的原因吗?搜索引擎不把他们抓取的URL放在HTML单元中,这样他们就可以呈现页面,而不仅仅是得到静态页面?

无论如何,我看到了解决这个问题的实现,使用外部"爬虫"服务作为ajax站点的一部分,但是有没有不需要设置这样的外部服务/服务器的解决方案?

然而,如果我从浏览器检查网站的"页面源",页面仍然是相同的html"从ajax内容空";这是ajax网站不能被索引的原因吗?搜索引擎不把他们抓取的URL放在HTML单元中,这样他们就可以呈现页面,而不仅仅是得到静态页面?

是的,依赖于Ajax来拉入内容的网站依赖于JavaScript来拉入内容,搜索引擎索引机器人(通常)不执行JavaScript,因为:

  • 它需要更多的CPU/RAM来做这些
  • 很难确定哪些交互会吸引新内容,哪些会做其他事情

无论如何,我看到了解决这个问题的实现,使用外部"爬虫"服务作为ajax站点的一部分,但是有没有不需要设置这样的外部服务/服务器的解决方案?

首先不要依赖JavaScript。建立一个与常规链接工作的网站。如果你愿意,把JavaScript放在上面。使用pushState和好友在有新内容时用真实的URL更新地址栏

简而言之,遵循渐进式增强和不引人注目的JavaScript原则

您应该知道的第一件事是,爬虫不会在页面上执行javascript,但是有一种方法可以使页面可爬虫(向爬虫显示您的应用程序使用AJAX)。

(谷歌爬虫)例子:

您应该首先通过向应用程序AJAX链接添加特殊令牌来指示爬虫您的站点支持AJAX爬虫方案。之后,爬虫将转换URL并使用转换后的URL调用您的服务器。服务器应该返回HTML快照(生成的HTML),它表示用户在浏览器中使用AJAX加载页面时创建的HTML内容。最后,您可以使用Fetch作为Google工具来测试当调用AJAX链接时Google爬虫将接收到什么。

我不使用GWT,但也许你可以在这里找到一些具体的解决方案。

最新更新