0

作为一名(GWT 开发人员),我理解 Ajax 站点动态呈现页面,例如,我制作的站点是单页并包含用于呈现“主页”、“关于我们”、“产品”等“页面”的选项卡。

然而,这些页面通常包含一个哈希(#),如果我访问说,http://example.com#HomePage或者#Products它将“最终”呈现页面和内容......

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

但是,如果我从浏览器检查站点的“页面源”,页面仍然是相同的 html“ajax 内容为空”;这是无法索引ajax网站的原因吗?搜索引擎不会将它们抓取的 URL 放在 HTML 单元中,以便它们可以呈现页面而不仅仅是获取静态页面?

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

4

2 回答 2

1

但是,如果我从浏览器检查站点的“页面源”,页面仍然是相同的 html“ajax 内容为空”;这是无法索引ajax网站的原因吗?搜索引擎不会将它们抓取的 URL 放在 HTML 单元中,以便它们可以呈现页面而不仅仅是获取静态页面?

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

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

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

首先不要依赖 JavaScript。建立一个使用常规链接的网站。如果您愿意,可以在顶部放置 JavaScript。拉入新内容时,使用pushState和朋友用真实 URL 更新地址栏。

简而言之,遵循渐进增强不显眼的 JavaScript原则

于 2013-03-27T13:57:05.247 回答
0

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

示例(谷歌爬虫):

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

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

于 2013-03-27T13:50:33.710 回答