0

私は(GWT開発者)として、Ajaxサイトがページを動的にレンダリングすることを理解しています。たとえば、私が作成したサイトは単一ページであり、「ホーム」、「会社概要」、「製品」などの「ページ」をレンダリングするためのタブが含まれています。

ただし、これらのページには通常、ハッシュ(#)が組み込まれており、sayにアクセスすると、ページとコンテンツが「最終的に」レンダリングされますhttp://example.com#HomePage#Products

たとえば、製品ページサイトをクロール可能な静的ブログサイトに配置するhttp://example.com#Productsと、このサイトをクリックすると、ajax呼び出しの後に最終的に製品がレンダリングされます。

ただし、ブラウザからサイトの「ページソース」を確認すると、ページは同じhtml「ajaxコンテンツから空」のままです。これがajaxサイトをインデックスに登録できない理由ですか?検索エンジンは、クロールするURLをHTMLユニットに配置しないため、静的ページを取得するだけでなく、ページをレンダリングできますか?

とにかく、この問題を回避し、ajaxサイトの一部として外部の「クローラー」サービスを使用する実装を見ましたが、そのような外部サービス/サーバーをセットアップする必要のないソリューションはありませんか?

4

2 に答える 2

1

ただし、ブラウザからサイトの「ページソース」を確認すると、ページは同じhtml「ajaxコンテンツから空」のままです。これがajaxサイトをインデックスに登録できない理由ですか?検索エンジンは、クロールするURLをHTMLユニットに配置しないため、静的ページを取得するだけでなく、ページをレンダリングできますか?

はい、コンテンツをプルするためにAjaxに依存しているサイトは、コンテンツをプルするためにJavaScriptに依存しており、検索エンジンインデックスボットは(一般的に)JavaScriptを実行しません。

  • そのためには、はるかに多くのCPU/RAMが必要です。
  • どのインタラクションが新しいコンテンツを引き込み、どのインタラクションが他のことを行うかを判断するのは非常に困難です

とにかく、この問題を回避し、ajaxサイトの一部として外部の「クローラー」サービスを使用する実装を見ましたが、そのような外部サービス/サーバーをセットアップする必要のないソリューションはありませんか?

そもそもJavaScriptに依存しないでください。通常のリンクで機能するサイトを構築します。必要に応じて、JavaScriptを上に重ねます。pushStateと友達を使用して、新しいコンテンツが取り込まれたときに実際のURLでアドレスバーを更新します。

つまり、プログレッシブエンハンスメント控えめなJavaScriptの原則に従ってください

于 2013-03-27T13:57:05.247 に答える
0

最初に知っておくべきことは、クローラーはページ上でjavascriptを実行しないということですが、ページをクロール可能にする方法があります(アプリケーションがAJAXを使用していることをクローラーに表示するため)。

例(グーグルクローラー):

最初に、アプリケーションのAJAXリンクに特別なトークンを追加して、サイトがAJAXクロールスキームをサポートしていることをクローラーに示す必要があります。その後、クローラーはそのURLを変換し、変換されたURLを使用してサーバーを呼び出します。サーバーは、ブラウザのユーザーがAJAXを使用してページをロードしたときに作成されるHTMLコンテンツを表すHTMLスナップショット(生成されたHTML)を返す必要があります。最後に、Fetch as Googleツールを使用して、AJAXリンクを呼び出すときにGoogleクローラーが何を受け取るかをテストできます。詳細な説明はここにあります。

私はGWTを使用していませんが、ここで特定の解決策を見つけることができるかもしれません。

于 2013-03-27T13:50:33.710 に答える