【问题标题】:Handlebars.js and SEOHandlebars.js 和 SEO
【发布时间】:2011-12-02 21:13:27
【问题描述】:

我已经阅读了大量关于 javascript 模板和搜索引擎优化的讨论。尽管如此,我还没有找到令人满意的问题答案(文档记录不充分或过时)。

目前我正在研究将 handlebars.js 作为客户端模板解决方案,因为我喜欢创建辅助函数的可能性。但是搜索引擎的索引呢? bot 是索引生成的内容(如预期的那样)还是仅索引带有丑陋的 javascript 伪变量的源?我知道关于这个问题有很多线索,但我觉得没有人确切知道答案。

如果像 Google 这样的引擎不能正确索引这些模板,为什么还要费心将它用于公共网站?

这个上下文中的另一个问题:是否可以在服务器端呈现 Handlebar.js 模板,然后将它们呈现到客户端?显然是为了避免所有这些 SEO 讨论。

【问题讨论】:

    标签: javascript templates seo handlebars.js


    【解决方案1】:

    对于 dom 处理客户端,大多数网络机器人(即 Google 和其他)不会即时解释 js 并解析新呈现的内容以进行索引。相反,Google(现在是 Bing)支持“Google Ajax Crawling Scheme”(https://developers.google.com/webmasters/ajax-crawling/docs/getting-started)——它基本上表明如果您希望 js 渲染的 dom 内容被索引(即渲染 ajax 调用结果),您必须能够:

    1. 使用hashbangs #!(即http://www.mysite.com/#!my-state)通过url触发异步js渲染,并且
    2. 能够根据请求在 js 修改后提供您网站的预渲染 dom 快照。

    如果使用 Backbone.js 或 Spine 之类的客户端 MVC 框架 - 如果您希望自己的 Web 应用被索引,则需要提供此服务。

    通常这意味着您拦截网络机器人发出的请求(在上面的链接中进行了解释),并使用无头浏览器(即 QT + capybara-webkit、HtmlUnit 等)抓取您的服务器端,然后将生成的 dom 交付给发出请求的机器人。

    我已经在 https://github.com/benkitzelman/google-ajax-crawlerhttps://github.com/benkitzelman/google-ajax-crawler 开始用 ruby​​ 做这件事(现在接受拉取请求)

    它使用 capybara-webkit 将其作为机架中间件执行(很快就会有 phantomjs)

    【讨论】:

    • 更新:gem 已在 RubyGems 上发布,任何 Rack 应用都可以将其用作中间件 gem install google_ajax_crawler 说明和使用示例在上面的 Github 链接中
    • 所以如果你要使用 Backbone.js,你必须确保你使用的是路由器?
    • 如何构建 JS 应用程序在很大程度上并不重要。您可以使用 Backbone 路由器,或者,您可以在不使用任何框架的情况下操作 dom - 棘手的一点是确定您的页面何时在无头浏览器中达到渲染状态,以便您在正确的时间拍摄快照。大多数快照框架都会向您的页面添加某种信号 fn,其想法是您在页面完成加载/渲染时调用它。
    • 请注意,这已被弃用:googlewebmastercentral.blogspot.com/2015/10/…
    【解决方案2】:

    有关 Meteor 项目(使用 Handlebars.js)用于 SEO 目的的临时解决方案,请参阅 Spiderable。

    http://docs.meteor.com/#spiderable

    【讨论】:

      【解决方案3】:

      我不了解 Handlebar.js,但据我了解,SEO 对 JAVASCRIPT 中的 CONTENT 有一些问题。确保您的内容对搜索引擎可见(使用 spyder 模拟器进行一些测试)。避免间谍陷阱通常是要走的路。希望对你有帮助。

      【讨论】:

        【解决方案4】:

        您可以使用Distal templates,它将模板作为 SEO 的 HTML 的一部分。

        【讨论】:

          【解决方案5】:

          搜索引擎不运行 JavaScript,因此如果您想让您的内容被索引,您还需要在服务器上呈现您的模板。当页面请求来自蜘蛛时,您可以使用 Node(服务器端 JS)中的把手来呈现您的模板。这是更多的工作,但这是可能的。 Github、google plus 和 twitter 都在做类似的事情。

          【讨论】:

            【解决方案6】:

            机器人是索引生成的内容(按预期)还是只索引带有丑陋 javascript 伪变量的源?

            也不是,因为索引器机器人不运行 JavaScript,而且您不提供模板作为 HTML 文档。

            构建一个无需 JavaScript 的网站,然后build on top of it。

            【讨论】:

            • 我同意,最好使用 JS 来修改浏览器中的 DOM,比如 jquery。所以你可以两全其美……从 JS 和语义 html 内容中获得很好的效果。
            • “越来越多的证据表明 Googlebot 也可以执行 javascript 并解析 Ajax 调用生成的内容”en.wikipedia.org/wiki/Googlebot
            • 直到 HTML5 将我们从文档转移到应用程序之前都是如此。
            猜你喜欢
            • 2012-10-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-02-24
            • 2011-09-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多