【问题标题】:Are AJAX sites crawlable by search engines?AJAX 网站是否可以被搜索引擎抓取?
【发布时间】:2010-11-13 06:55:42
【问题描述】:

我一直认为 AJAX 驱动的内容对搜索引擎是不可见的。

(即通过 XMLHTTPRequest 插入 DOM 的内容)

例如,在本站中,主要内容是由浏览器通过AJAX请求加载的:

http://www.trustedsource.org/query/terra.cl

...如果您在禁用Javascript的情况下查看此页面,则主要内容区域为空白。

但是,Google 缓存会显示 AJAX 加载后的全部内容:

http://74.125.155.132/search?q=cache:JqcT6EVDHBoJ:www.trustedsource.org/query/terra.cl+http://www.trustedsource.org/query/terra.cl&cd=1&hl=en&ct=clnk&gl=us

因此,显然搜索引擎会索引 AJAX 加载的内容。

问题:

  • 这是搜索引擎的新功能吗?最多 网络上的帖子表明您 必须发布重复的静态 HTML 供搜索引擎查找的内容 他们。
  • 有什么技巧可以获取 要爬取的 AJAX 驱动的内容 搜索引擎(除了创建 重复的静态 HTML 内容)。
  • 将 AJAX 驱动的内容 如果它是从加载索引的 单独的子域?一个怎么样 单独的域?

【问题讨论】:

  • "...如果您在禁用 Javascript 的情况下查看此页面,则主要内容区域为空白。"不,不是。实际上,它看起来很混乱。
  • 你用的是什么浏览器?当我在禁用 Javascript 的情况下访问 Firefox 中的第一个链接时,我看到“'terra.cl' 的信息”,然后是一个空白框。查看 html 源代码时,我看到一个 ID=query-content 的空 DIV,AJAX 内容将放在那里。

标签: javascript ajax search seo xmlhttprequest


【解决方案1】:

Google 刚刚让他们的爬虫在没有任何开发人员更改的情况下运行 Javascript!

http://googlewebmastercentral.blogspot.com/2015/10/deprecating-our-ajax-crawling-scheme.html

他们说:

今天,只要您不阻止 Googlebot 抓取您的 JavaScript 或 CSS 文件,我们通常能够像现代浏览器一样呈现和理解您的网页。

【讨论】:

    【解决方案2】:

    AJAX 驱动不会被搜索引擎抓取(或至少不会被 Google 抓取)。

    您可以在 google 缓存中看到该页面的原因是因为在缓存中,有完整的页面,包括 .js 文件。因此,当您看到该页面时,您的浏览器会使用 google 缓存的 .js 文件。

    我认为没有什么技巧可以让它被搜索引擎抓取,除了使用静态 .html。

    编辑于 2010 年 4 月 27 日:Google 发布了一个到 make AJAX crawlable 的方法

    Google webmaster toolkit 可能会有所帮助。

    【讨论】:

    • 我认为这不是真的。如果我在禁用 Javascript 的情况下查看 google 缓存链接,我仍然会看到 AJAX 驱动的内容。如果我查看源代码,内容就在 html 中。
    【解决方案3】:

    按照 Google 的这份指南,AJAX 网站可能会变得可抓取:

    http://code.google.com/intl/sv-SE/web/ajaxcrawling/docs/getting-started.html

    【讨论】:

      【解决方案4】:

      如果您使用 jQuery 选项卡之类的东西,即使您链接到同一目录中的 HTML 文件,它也会在没有 javascript 的情况下很好地恢复正常,并且选项卡就像实际页面一样。这很丑陋,但它有效。您也可以设置这些版本的样式。

      【讨论】:

      • 嗯,是的,您加载的任何 AJAX 内容都应该有一个很好的优雅后备,以便搜索引擎和使用旧/javascript 禁用浏览器的人可以查看一些内容。
      【解决方案5】:

      我已安装并激活了 NoScript。两个链接都显示相同的内容(+/- 谷歌标题栏)。因此,Google 缓存只显示静态存在的内容。

      【讨论】:

      • 我得到的结果与你不同。我安装了noscript。原始页面不显示主要内容,谷歌缓存页面显示它。如果我查看源代码,我会在 ID = query-content 的 DIV 中看到不同的内容。 (这是注入AJAX内容的div)你能在IE里试试吗?
      【解决方案6】:

      搜索引擎可以运行索引 Ajax 内容所需的 JavaScript,但这会很困难且计算量很大——我不知道有什么实际这样做的。

      一个写得很好的网站,如果它使用 Ajax,就会按照progressive enhancement 的原则使用它。无需运行 JavaScript 即可使用任何关键功能。

      另一方面,使用 JavaScript 重新发明框架(并且不使用渐进增强)的网站会遇到所有常见的框架问题,但会用孤立页面换取搜索引擎的不可见性。

      【讨论】:

      • 渐进增强权。
      【解决方案7】:

      立即加载的内容(例如在初始页面加载后的示例中使用辅助 HTTP 请求)通常对搜索引擎爬虫可见。

      但是,如果您的内容超出此范围,则会在用户操作后通过 ajax 加载,例如单击选项卡或按钮等将不会被看到或编入索引。只有当它们具有“真正的”锚链接时,它们才会被看到或编入索引。

      【讨论】:

      • Alex,您能否提供证据证明 Google 会在页面加载时运行 AJAX 请求的页面上运行 AJAX 请求?
      • @Josh,不,因为这不是真的。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      • 1970-01-01
      • 2012-02-24
      相关资源
      最近更新 更多