3

ヘッドレス ブラウザを起動して、javascript (具体的には sammy.js) を使用して AJAX コンテンツを配信するサイトの静的な HTML スナップショットを提供する方法を理解するのに本当に苦労しています。

私は、AJAX アプリをクロール可能にするための Google の仕様に取り組んでいます。

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

これは大部分が素晴らしく、非常に明確であり、?_escaped_fragment_ URL を拾うのに問題はありません。

テンプレート作成のほとんどはサーバー側で行われるため、さまざまなテンプレート ファイルに含めるために、sammy アプリ コード (多くのルートがあります) からの同じ正規表現一致を使用する PHP スナップショット作成ファイルを作成することにしました。ただし、アクションの多くは JavaScript アプリで発生するため、PHP ですべての処理をミラーリングすることになります。つまり、両方のファイルを横に並べてクロス言語で維持することになります。これは大変な作業です。

ここで、ヘッドレス ブラウザを使用してページを「レンダリング」し、すべての JavaScript を実行して (#!/ ルートに一致し、リクエストに対して正しいコンテンツを配信する)、DOM コンテンツ全体を HTML として返すことができることを読みました。これは googlebot に提供されます。

私は長く懸命に検索しましたが、PHP からヘッドレスブラウザーを実行するためのステップバイステップのガイドを見つけることができません (完全な Java 初心者向け)。つまり、何を検索すればよいかわからないということです。

私が疑問に思っているのは、これらの HTML スナップショットを提供するためにヘッドレス ブラウザをセットアップして使用するのはさらに面倒なことでしょうか? もしそうなら、とにかくやる価値はありますか?

また、私に指摘できるガイドがあれば、それは素晴らしいことです!

ありがとう!

ジョス

4

2 に答える 2

2

クライアント側で持っているものをサーバー上で複製する方が良いと思います。非効率的な作業のように見えるかもしれませんが、少なくとも明確で限られた範囲しかありません。

評判の良いヘッドレスブラウザのほとんどは、アプリケーション開発用のテストツールとして設計されています。したがって、それらは構造が非常に自由です。これは、アプリケーションのQAを担当する場合は良いことですが、特定の1つのことだけを実行したい場合はそれほど多くはありません。

私はSelenium-RCを使用して、特定のプロジェクトで1つの特定のことを実行しましたが、Seleniumに関連するすべての懸念に対処することは、すぐにそれ自体がプロジェクトになることがわかりました。Selenium-RCは確かにあなたがやろうとしていることを達成することができますが、あなたが達成しようとしていることの特異性を考えると、それは大きなコミットメントのように思えます。

(私自身完全なJavaアマチュアなので、 HTMLUnitについてコメントすることはできませんが、仕様だけでは、Selenium-RCよりもおそらくあなたのニーズに適しているようです。同じセットアップと管理が必要です。)

では、PHPですべてを複製するという選択肢に戻りましょう...

HTMLスナップショットでは、ブラウザ内の場合とまったく同じである必要はないことに注意してください。コアコンテンツと主要なナビゲーションリンクがある限り、GoogleBotには必要なものがほとんど含まれています。 。また、サイトのすべてのページにインデックスを付ける必要がありますか?または、本当に最も重要な少数のルートを特定し、それらのスナップショットを提供することはできますか?また、Web分析またはサーバーログデータを使用して、スナップショットの優先順位をより適切に通知することもできます。

于 2011-03-20T15:55:48.177 に答える
0

疑問に思っている人へ-node.jsを使用して必要なことを正確に行う方法を考え出したので、すぐにgithubで公開し、質問を更新します...

于 2011-04-26T09:46:05.287 に答える