2011-10-07 8 views
15

私は、JavaScriptのテンプレートと検索エンジンの最適化に関する多くの議論を読んだことがあります。それでも、質問に対する満足のいく答えは見つけられませんでした(文書化されていないか、古くなっています)。Handlebars.jsとSEO

現在、私はヘルパー関数を作成する可能性があるので、クライアント側のテンプレートソリューションとしてhandlebars.jsを探しています。しかし、検索エンジンのインデックス作成はどうですか?ボットは生成されたコンテンツ(意図どおり)を索引付けするのか、醜いjavascript擬似変数を持つソースのみを索引付けしますか?私はこの問題について多くのスレッドがあることを知っていますが、誰もその答えを正確に知る人はいないと感じています。

Googleのようなエンジンでこれらのテンプレートのインデックスを正しく作成できない場合は、公開ウェブサイトでこれを使用するのはどうしてですか?

このコンテキスト内の別の質問:Handlebar.jsテンプレートをサーバー側でレンダリングしてクライアント側に提示することは可能ですか?明らかにすべてのこのSEOの議論を避けるために。

答えて

22

クライアント側では、ほとんどのWebボット(つまりGoogleなど)は、jsをオンザフライで解釈せず、新しくレンダリングされたコンテンツを解析してインデックスを作成しません。代わりに、Googleでは、Google Ajax Crawling Scheme(https://developers.google.com/webmasters/ajax-crawling/docs/getting-started)をサポートしています。これは基本的にjsがdomコンテンツをインデックスに付ける(つまり、ajax呼び出し結果をレンダリングする)場合に可能です:

  1. トリガ非同期hashbangs #!を使用してURLを介してレンダリングJS(すなわちhttp://www.mysite.com/#!my-state)、および
  2. は、リクエストに応じてjsの変更後のサイトのレンダリング済みのDOMスナップショットを提供することができます。

Backbone.jsやSpineのようなクライアント側のMVCフレームワークを使用している場合、Webアプリケーションのインデックスを作成する場合は、このサービスを提供する必要があります。

は一般的に、これはあなたがウェブボットによって行われた要求をインターセプトを意味します(上記のリンクを説明した)、その後、生成された提供、ヘッドレスブラウザ(すなわちQT + capybara-webkitHtmlUnit、など)を使用して、あなたの側サーバー側をこすり要求しているボットに戻る。

は私がhttps://github.com/benkitzelman/google-ajax-crawler

でルビー(今プル要求を取る)でこれを行うには宝石を始めたことありません。このカピバラ、WebKitの(そしてすぐにphantomjs)について

+0

更新:gemはRubyGemsで公開されており、ミドルウェア 'gem install google_ajax_crawler'の指示として使用でき、使用例はGithubのリンク – Ben

+0

にありますので、Backbone.jsを使用する場合はルータを使用していることを確認しますか? – unclejam

+0

JSアプリの構造は、ほとんど重要ではありません。 Backboneルーターを使用することもできますし、フレームワークを使わずにdomを操作することもできます。ヘッドレスブラウザでページがレンダリングされた状態になった時点を判断してスナップショットを適切なタイミングで取得します。ほとんどのスナップショットフレームワークでは、ある種のシグナリングfnがページに追加されます。これは、ページの読み込み/レンダリングが完了したときに呼び出すというものです。 – Ben

1

私はHandlebar.jsについてよくわかりませんが、私の理解のために、SEOはJAVASCRIPTのCONTENTに何らかの問題があります。あなたのコンテンツが検索エンジンに表示されていることを確認してください(何らかのテストのためにスパイダーシミュレータを使用してください)。スパイダートラップを避けるのが一般的に行く方法です。それがあなたを助けることができると願っています

-2

ボットは生成されたコンテンツを意図したとおりにインデックス付けするのか、醜いjavascript擬似変数を持つソースのみをインデックス付けしますか?

インデクサボットはJavaScriptを実行しないため、HTMLドキュメントとしてテンプレートを提供しないため、

JavaScriptを使用せずに動作するサイトを構築し、次にbuild on top of itを作成します。

+0

私は、jQueryのようなブラウザでDOMを変更するJSとのより良い仕事を同意するものとします。だから、JSと意味論的なhtmlコンテンツの両方から最大の効果を得ることができます。 – GibboK

+2

「GooglebotがAjax呼び出しで生成されたjavascriptおよび解析コンテンツを実行できる証拠が増えています」http://en.wikipedia.org/wiki/Googlebot –

+0

これは、HTML5が文書からアプリケーションに移動するまでは当てはまりました。 – Lodewijk

1

検索エンジンではJavaScriptが実行されないため、コンテンツのインデックスを作成する場合は、テンプレートもサーバーにレンダリングする必要があります。ノード(サーバー側JS)のハンドルバーを使用して、ページリクエストがスパイダーから来たときにテンプレートをレンダリングできます。それはもっと仕事ですが、可能です。 Github、googleプラス、そしてtwitterはすべて似たようなことをしています。

-1

Distal templatesを使用すると、テンプレートをSEO用のHTMLの一部として配置できます。

-1

参照Spiderableを使用して、ラックミドルウェアとして一時的なソリューションMeteorプロジェクト(Handlebars.jsを使用)はSEO目的で使用します。

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