AJAX 抓取方案常见问题及解答

《AJAX 抓取方案常见问题及解答》由珠海SEO骆辉校seo博客于2016年07月14日整理发布
  • 什么时候应该使用_escaped_fragment_和什么时候应该用#!在我的AJAX网址?
  • 在哪里可以看到在行动这个计划?
  • 如果我选择不执行AJAX抓取方案(配置会发生什么#!在我的网站)?
  • 我的网页会在哪里出现在搜索结果?
  • 我应该如何保持目前的我的内容?
  • 如果我的应用程序不使用哈希代码?
  • 怎么样的URL没有哈希代码?
  • 我可以使用重定向我的静态内容指向履带?
  • 请问这种做法导致“丑”_escaped_fragment_ URL的扩散?
  • 这是否计划开门伪装?
  • 我可以使用此方案来帮助使我的Flash或其他富媒体文件更容易抓取?
  • 如果我的网站有一个不应该被抓取的哈希代码网址?
  • 我将能够搜索_escaped_fragment_网址吗?
  • 怎么样#的现有用途!哈希片段?
  • 有什么辅助功能?
  • 如果使用rel="canonical",网站管理员应该使用<link rel="canonical" href="http://example.com/ajax.html?_escaped_fragment_=foo=123" />还是<link rel="canonical" href="http://example.com/ajax.html#!foo=123" />
  • 我应该把哪种网址在我的网站地图?
  • 如何将#!网址影响产品的提要,公司正在提交?他们愿意为产品搜索和通用搜索网站使用相同的网址。
  • 我使用作为的HtmlUnit无头的浏览器,它“不工作”。为什么不?

 

问:什么时候应该使用_escaped_fragment_和什么时候应该用#!在我的AJAX网址?

您的网站应始终使用#!语法已经采用AJAX抓取方案中的所有网址。Googlebot不会遵循超链接的_escaped_fragment_格式

问:我在哪里可以看到在行动这个计划?

看看一个示例AJAX应用程序http://gwt.google.com/samples/Showcase/Showcase.html。如果你点击任何左边的链接,你会看到网址包含#!哈希代码,并且应用程序将导航到相应的该哈希代码的状态。如果更改#!(例如,http://gwt.google.com/samples/Showcase/Showcase.html#!CwRadioButton)至?_escaped_fragment_=(例如,http://gwt.google.com/samples/Showcase/Showcase。 HTML?_escaped_fragment_ = CwRadioButton),你会看到,该网站返回一个HTML快照。如果试图查询“网站:gwt.google.com展示文本输入”,你会看到,不仅在搜索结果的URL AJAX,而且还履带能够索引,这是以前没有被看到的内容爬虫(“文本输入”)。您可以按照搜索结果链接,查看页面(“查看源文件”)的源验证这一点。

问:如果我选择不执行AJAX抓取方案(配置会发生什么#!在我的网站)?

在短期内,你的网站将被谷歌索引保持原样,有可能在搜索结果中没有充分体现多页。然而,我们连续作业,使Googlebot的行为更像是一个浏览器。当我们实现更多的功能,谷歌可能会开始索引你的网页正确的帮助。这就是说,AJAX抓取机制为那些已经在使用AJAX,并希望确保他们的内容在今天适当的索引网站的解决方案。我们预计,这将是谁的人已经拥有自己的网页HTML快照,一个好的解决方案,可以很容易地生产它们,或者谁选择使用无头浏览器获取此类HTML快照。

问:我的网页会在哪里出现在搜索结果?

从你的AJAX网址内容的处理方式类似于网络上的其他内容。

  • 创建一个有用的,信息丰富的网站,并写清楚,准确地描述内容的网页。
  • 想想的话用户会使用找到您的网页,确保网站上确实包含了这些文字。

什么是AJAX页面不同的是,Googlebot的必须能够看到页面的内容。正如静态网页,谷歌不作任何搜索排名的保证。

问:我如何目前应该保持我的内容?

在这个问题的答案完全取决于如何频繁地应用内容的变化。如果频繁变化,你应该总是构造一个新的HTML快照以响应抓取工具请求。在另一方面,考虑一个在线图书馆档案,其库存定期不会改变。为了使服务器不必一遍遍地产生相同的HTML快照,它可能是最好一次创建所有相关HTML快照(可能离线),然后将其保存以供将来参考,或者回应Googlebot 304( “未改性”)码。

问:如果我的应用程序不使用杂凑什么片段?

也许它应该!您可以大大加快使用哈希代码应用程序。哈希片段通过在客户端浏览器进行处理,不会导致整个页面刷新。此外,他们将允许你使你的应用历史作品(臭名昭著的“浏览器后退按钮”)。各种AJAX构架都支持哈希代码。例如,看到真正简单的历史,jQuery的历史插件,谷歌Web Toolkit的历史记录机制或ASP.NET AJAX的历史记录管理的支持。

但是,如果这是不可行的组织你的应用程序来使用哈希代码,您仍然可以使用我们为没有哈希代码的网页的语法。

注意:请确保您使用此选项仅对包含动态,阿贾克斯创建的内容页面。对于只有静态内容的页面,它不会给额外的信息,爬虫,但它会放在你和谷歌的服务器上额外的负担。

问:没有什么网址的哈希代码?

我们为没有哈希代码的网页提供特殊的语法。有关详细信息。

问:我可以使用重定向我的静态内容指向履带?

重定向都还好用,只要他们最终让你一个网页,这相当于什么用户将在#看看!版本的页面。这可能是一些网站管理员不是直接提供了内容更加方便。如果您选择这种方法,请记住以下几点:

  1. 相比于直接服务的内容,使用重定向将导致额外的流量,因为爬虫必须遵循重定向获取内容。这将导致在稍高的数目取/秒在爬行活性。
  2. 请注意,如果您使用永久(301)重定向,在我们的搜索结果中显示的URL将通常被重定向的目标,而如果使用一个临时的(302)重定向,我们通常会显示#!网址在搜索结果中。
  3. 根据站点的设置方式,显示#!可能会产生更好的用户体验,因为用户将直接进入从谷歌搜索结果页面的AJAX体验。点击一个静态页面上会带他们到静态内容,他们可能会遇到额外的避免网页加载时间,如果该网站后来想他们切换到AJAX的经验。

问:请问这种做法导致“丑”_escaped_fragment_ URL的扩散?

_escaped_fragment_针对URL语法是不应该由最终用户看到的临时网址。在各种情况下,用户将看到的,漂亮的URL(带#!代替_escaped_fragment_)应使用:在正常的应用程序交互,站点地图中的超链接,并在其他任何情况下,用户可能会看到网址。出于同样的原因,搜索结果包括漂亮的网址,而不是难看的URL。

问:这是否计划开门伪装?

伪装是响应一个给定的URL,而不是用户提供不同的内容抓取。这通常是在搜索结果中提升自己的排名的意图完成。隐形一直(而且将永远是)的搜索引擎的一个重要问题,需要注意的是使AJAX应用程序抓取绝不邀请做出伪装更容易是很重要的。出于这个原因,HTML快照必须包含相同内容的最终用户将在浏览器中看到。如果不是这种情况下,可以考虑伪装。请参阅我们的隐形文章的更多细节。

我可以使用此方案来帮助使我的Flash或其他富媒体文件更容易抓取?

虽然谷歌没有索引多种类型的富媒体文件,虽然我们不断改善我们的抓取和索引能力的工作,有什么情况下可以适当提供具有内容的抓取工具,否则不可见。例如,履带可能看不到您的Flash应用程序的所有内容。由于这是一个平行的情况不是可见的履带式动态Ajax内容,您可以自由使用这里描述为用户提供额外的内容抓取工具的计划。但是,你必须确保你的网站将不会被怀疑伪装。此外,HTML快照必须包含相同的内容,最终用户在浏览器中看到,和谷歌保留排除其被认为是隐形索引的网站的权利。

问:如果我的网站不应该被抓取的哈希代码网址?

当你的网站采用AJAX抓取机制,Googlebot会相应地处理你的哈希代码网址。不过,如果你有一个不应该被抓取的哈希代码网址,我们建议您添加不允许指令robots.txt文件。您可以在不应该被抓取的哈希代码使用惯例,然后排除robots.txt文件中符合该惯例的所有网址。假设所有不可编入索引状态的形式#的!DONOTCRAWLmyfragment(例如http://www.example.com/ajax.html#!DONOTCRAWLkey=value)。然后,你可以阻止Googlebot通过添加以下到您的robots.txt抓取这些网页:

禁止/ * _ escaped_fragment_ = DONOTCRAWL

问:我是否能够搜索到_escaped_fragment_的网址?

号正确构造的_escaped_fragment_URL被转换回等效#!的Googlebot网址,因此,将不匹配的查询inurl:_escaped_fragment_。显示此查询任何结果通常表明,一个网站提供的网址无效,向Googlebot,对于包含多个例如网址'?'字符。这可能是由于传统使用的#!,并不一定表明该网站实施了AJAX抓取方案的支持。

换句话说,它通常是不可见的,一个网站采用了AJAX抓取机制,除了在该网站的使用含有AJAX网址的最终用户#!。其中一个例子是facebook.com。如果你使用Facebook,你会看到#!AJAX网址频繁了。

问:关于#的现有用途么!哈希片段?

#!在现有的杂凑片段中不常使用的令牌; 然而,它不是由URL规范不允许。如果应用程序使用#会发生什么!但并不想采用新的AJAX抓取机制?你可以采取一种方法是在robots.txt来表示这履带添加指令。

禁止/ * _ escaped_fragment_

请注意,这意味着,如果你的应用程序只包含这个网址:www.example.com/ajax.html#!key=value,那么这个网址不会被抓取。但是,如果你的应用程序还包含了原始网址www.example.com/ajax.html,这个网址仍然抓取上述的robots.txt。

问:有关辅助功能是什么?

AJAX检索机制的积极的副作用是,网站管理员提出申请残疾用户使用更方便。这份新协议将可访问到一个新水平:无需人工干预,网站管理员可以生成HTML快照,例如用无头的浏览器,其中包含所有相关内容,并通过屏幕阅读器使用。(这也意味着它更容易保持静态内容最新,因为需要较少的手动工作。)换句话说,网站管理员现在有一个更大的激励,使他们的应用程序访问残疾人。

他们应该使用<link rel="canonical" href="http://example.com/ajax.html#!foo=123" />

问:我应该把哪种网址在我的网站地图?

站点地图应该包含您愿意让显示在搜索结果中的版本,所以它应该是http://example.com/ajax.html#!foo=123

一般地,#!该URL的版本应被视为应在所有上下文中使用的“规范”的版本。该_escaped_fragment_URL被认为是最终用户应该不会看到的临时网址。

问:我使用的作为的HtmlUnit无头的浏览器,它“不工作”。为什么不?

如果“不起作用”表示HtmlUnit没有返回您期望看到的快照,它很可能是罪魁祸首就是你没有给它足够的时间来执行JavaScript和/或XHR请求。为了解决这个问题,请尝试使用以下内容:

  • 使用NicelyResynchronizingAjaxController。这将导致HtmlUnit等待任何未完成的XHR调用。
  • 撞了等待时间增加waitForBackgroundJavaScript和/或waitForBackgroundJavaScriptStartingBefore

这将很可能解决您的问题。如果没有,你也可以尝试对常见问题的HtmlUnit。HtmlUnit还设有用户论坛。

转载请注明出处:珠海seo网站优化 » AJAX 抓取方案常见问题及解答

赞 (0)
分享到:更多 ()

评论 0