【问题标题】:Facebook's BigPipe and SEO : Cloaking?Facebook 的 BigPipe 和 SEO:伪装?
【发布时间】:2012-02-10 06:44:46
【问题描述】:

我对在显示网页时改善用户体验的Facebook's BigPipe 技术非常感兴趣。缺点是它严重基于 Javascript,而且对搜索引擎一点也不友好。

在我自己的网站上开发类似技术时,我将其设计为可以很容易地在服务器端禁用它以提供更多标准页面,而无需启用 BigPipe。现在,我正在寻找一种使其对爬虫友好的方法。

  • 简单的方法是将非 BigPipe 内容提供给搜索引擎爬虫/机器人,并将流水线内容提供给其他人。这不应被视为伪装:内容完全相同,布局相同(在执行 BigPipe 的 javascript 之后)。唯一改变它的交付方式,使其对爬虫更友好。但 Google 会认为这是合法的吗?

  • 第二种方法是使用另一个 Javascript 来解决这个问题。在第一个请求中,发送非 BigPipe 页面,其中包含一些将保存一些 cookie 的 Javascript。在后续请求中,仅在提供 cookie 时才发送 BigPipe 内容。非常第一个页面加载不会被优化,但另一个会。看起来是个不错的解决方案,但我不太喜欢将 cookie 相乘。

  • 第三种方式是流式传输 BigPipe 内容,而不是像 Facebook 那样使用 HTML cmets,而是使用<noscript> 标签。这将使 pagelet 看起来像:

    <noscript id="pagelet_payload_foo">Some content to be indexed here</noscript>
    <script>onPageletArrive({id:'foo', [...]})</script>
    

    而不是 Facebook 的方法:

    <code id="pagelet_payload_foo"><!-- Some content to be indexed here --></code>
    <script>onPageletArrive({id:'foo', [...]})</script>
    

    这看起来很棒,简单,爬虫友好和用户友好。但这对我来说似乎有点hackish,并且在 IE 7/8 中不起作用,因为 noscript 标记的内容在 DOM 中被忽略了。这将涉及这些浏览器的一些肮脏的特殊情况。

然后,我更仔细地研究了 Facebook 的工作。似乎他们也在做同样的事情。页面在我的浏览器中进行了优化,但不在 Google 的缓存中。我试图清除所有浏览器缓存和 cookie,并再次请求该页面。无论如何,我一直通过 BigPipe 获取内容。他们没有使用任何基于 cookie 的技术。

那么,问题很简单:Facebook 是如何做到这一点的?第一种方法会被视为伪装,还是因为它是 Facebook 而只对 Facebook 有效?还是我错过了什么?

谢谢。

【问题讨论】:

  • 我只是想问你一个问题:你是如何实现“我设计的它可以很容易地被禁用”的?
  • 非常简单:当我不想启用 BigPipe 时,页面内容会内联呈现,而不是在页面生成结束时被延迟。我创建的模板标签只有两种不同的行为。
  • 所以您只需执行类似if ($enabled &amp;&amp; !$not_closed_html) { echo "&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;"; echo bigPipe($html); } elseif ($enabled) { echo bigPipe($html) } 的操作?

标签: javascript seo cloaking


【解决方案1】:

简单的答案是 Facebook 会区分搜索机器人并为它们提供不同的内容。这可以通过用户代理(正如我认为您在 Q 中暗示的那样)或通过查找 IP 地址以查看它是否与 Google 地址范围匹配。

完全静态的版本是我的首选,因为它还允许您优化速度,这是 Google(可能还有其他人)在其索引中包含的内容。

【讨论】:

  • 你的意思是根本不使用 BigPipe? BigPipe 是一种速度优化:它允许用户开始与页面交互并迅速加载资源。禁用它对页面生成时间几乎没有影响,但对页面的感知速度有显着影响(即使在页面末尾包含 JavaScript,浏览器也必须等待所有内容被呈现(至少在开始加载脚本并允许用户与页面交互之前,重要的部分(如侧边栏或广告)。而且...... IP / UA 方法不被 Google 视为伪装吗?
  • 只有当网站向机器人和普通用户提供不同的内容时,它才会隐藏
猜你喜欢
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多