AJAXアプリケーションをクロール可能にしますか?Google App EngineでシンプルなWebサービスを作成してHTMLスナップショットを作成するにはどうすればよいですか?

クリス・ジェイコブ:

現実の問題:

私のアプリをHerokuホストしていますが、筆者の知る限り、GooglebotがHTMLスナップショット生成してAJAXコンテンツにインデックス付けるためにHTMLUnitなどのヘッドレス(GUIなし)ブラウザーを実行するためのソリューションを提供できません

私が提案するソリューション:

まだ行っていない場合は、GoogleのAJAXアプリケーションをクロール可能にするため完全な仕様を読むことをお勧めします

私が持っていると想像してください:

  • ドメインのHerokuでホストされているSinatraアプリhttp://example.com
  • アプリは、ページの上部にタブを持っていますTabA、TabB、TabC
  • 各タブの下にはSubTab1、SubTab2、SubTab3があります
  • URLがhttp://example.com#!tab=TabA&subtab=SubTab3クライアント側のJavaScriptの場合、onload location.hashはを受け取り、AJAXを介してTabA、SubTab3コンテンツにロードします。

注:ハッシュバン(#!)はGoogle仕様の一部です

Google App Engine(GAE)でホストされる簡単な「Webサービス」を構築したいと思います

  1. たとえば、URLパラメータを受け入れますhttp://htmlsnapshot.appspot.com?url=http://example.com#!tab=TabA&subtab=SubTab3(URLパラメータはURLEncodedである必要があります)
  2. HTMLUnitをhttp://example.com#!tab=TabA&subtab=SubTab3実行して、サーバーでクライアント側のJavaScript を開いて実行します。
  3. HTMLUnitは、すべてが完了すると(または45秒程度の時間が経過すると)DOMを返します。
  4. 返されるコンテンツは、JSON / JSONPを介して送り返すことができます。または、URLは、Google App Engineサーバーに生成および保存されたファイルに返されます(ファイルベースの「キャッシュされた」結果の場合)...ここから提案を開いてください。ファイルへのURLが返された場合、CURLを使用してソースコード(別名HTMLスナップショット)を取得できます

私のhttp://example.comアプリはhttp://htmlsnapshot.appspot.com... への呼び出しを管理する必要があります...基本的に:

  1. Googlebotの呼び出しをキャッチしますhttp://example.com/?_escaped_fragment_=tab=TabA%26subtab=SubTab3Googlebot クローラーは、%26 =&などの特定の文字をエスケープします)。
  2. バックエンドからにリクエストを送信http://htmlsnapshot.appspot.com?url=http://example.com#!tab=TabA&subtab=SubTab3(urlパラメータはURLEncodedである必要があります)
  3. 返されたHTMLスナップショットをフロントエンドにレンダリングします。
  4. Googleがコンテンツにインデックスを付けて、喜んでいます!

Google App Engine、Java、HTMLUnitの経験はありません。

私はそれを理解することができるかもしれません...そして私がした場合、私の結果を投稿します。

それ以外の場合、これは、初心者がこのようなWebサービスをセットアップするためのステップバイステップガイドの概要を説明する、キックアスブログの投稿を書ける非常に良い機会だと思います。

これにより、優れた(そして無料の!)Google App Engineがより多くの人々に紹介されます。また、クロール可能なAJAXコンテンツに関するGoogleの仕様を採用することを、より多くの人々に間違いなく奨励します。

Googleの仕様がより受け入れられるようになると、ヘッドレスブラウザの設定の "ハードル"は、多くの開発者をググリングして回答を送ります。名声と栄光の答えを今すぐ手に入れましょう!(編集:少なくとも私はあなたの賞賛を歌います)。

@_chrisjacob解決策について話したい場合は、Twitterで私をヒットしてください

フィリップボーダン:

AppEngineでHTMLunitを正常に使用しました。これを実行するための私のGWTコードはgwt-platformプロジェクトで利用できます。私が得た結果は、Amit ManjhiによるHTMLunit-AppEngineテストアプリケーションの結果と同様でした。

GWTPの現在のHTMLユニットのサポートを使用して、説明したとおりに実行することは比較的簡単ですが、より単純なアプリで実行することもできます。私が目にする1つの問題は、AppEngineリクエストのタイムアウトが30秒であるため、処理するのにHTMLunitよりも長いページをHTMLユニットで処理できないことです。

更新:久しぶりですが、GWTPを使用してGWTアプリケーションをクロール可能にすることに関する長年の問題をようやく解決しました。ドキュメントは完全にはありませんが、問題を確認してくださいhttp : //code.google.com/p/gwt-platform/issues/detail?id=1

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ