• 締切済み

ajaxで生成したコンテンツ

google botなどはjavascriptで生成したhtmlも収集しますよね? javascriptでタイムラグなしに生成したhtmlならば収集するのはわかるのですが、私のサイトはメインコンテンツがajaxで生成しています。 生成するのに1~3秒かかりますがそれでもgoogle botなどの検索エンジンはそれらも取得してくれるのでしょうか? よろしくお願いします。

みんなの回答

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.5

回答4に訂正を入れます 読み込み時に同期的にJSから書いた分はきちんとインデックスされるようです 非同期の場合はわかりませんが、テストしてみるのはそう難しくないのではないかと思います

  • b0a0a
  • ベストアンサー率49% (156/313)
回答No.4

google botはある程度JSを実行できて、JSで動的に生成されるリンク先をクロールする程度の能力があることはよく知られていますが、 ajaxに限らずそもそも動的にページを書き換えた分の内容は拾ってくれないんじゃないかと思います。 botの詳細は公開されていませんし、日々進化しているので確かなことは分かりませんし、 仮に今はダメでも来月には取ってくれるようになってもおかしくありません。

suffre
質問者

お礼

ありがとうございます。 最近googleがAjaxクロールについての解説をされたみたいです。 そちらを参考にしてみようと思います。

  • hue2011
  • ベストアンサー率38% (2801/7249)
回答No.3

またNo.1です。 言い足りませんでした。 たとえばOK Waveでされた質問が検索エンジンに引っかかるのはなぜか? それは静的ページが存在しているからです。 たとえばこの質問ですけど、 http://okwave.jp/qa/q8525242.html という、明らかに1ファイルで参照できます。だったら検索エンジンはなめてくれます。 DBに内容は入っているとは思いますが、表示ページはDBに書き込まれた直後にそこで作られています。 静的ページでなければ、質問や回答で別の質問内容を簡単に引用するのは大変です。 一方、「ビジネスキャリア」というクリックをすると最新から順番にリスト表示がされますが、さすがにここにリスト表示される形で検索エンジンでひきあてていないでしょう。

suffre
質問者

お礼

何度もご回答頂きましてありがとうございます。 トップページの場合はAjaxで取得しないでPHPでトップページを生成するときにPHP内部でDBから取得してhtmlを生成したほうが良さそうですね。 あと、最近googleがAjaxページに対するクロールについて解説している情報がたくさんありました。 それに動的ページが生成されたらそのコピーを静的ページとして作ってサイトマップに書き込む、というのも方法の一つみたいですね。

  • hue2011
  • ベストアンサー率38% (2801/7249)
回答No.2

No.1です。回答へのお礼コメントに対してお答えします。 トップページを表示するとすぐにデータを引っ張ってくるから、PHPのソースコードには書かれているという意味ですね。 この動きは、ページのcreateイベントが走って、それがDBを読むプログラムを起動して表示ページを生成する、というものです。 ページのcreateイベントはいつ発生するか。 ブラウザからURLに対してオープンを発行するからですね。   ブラウザクリック → ページオープン → ページ生成ソフト起動 → 新ページ生成 → ブラウザ表示 検索エンジンのクローラはそういうオープンをかけるでしょうか。 もしそれをやったら、上の右矢印を4ステップまたなければなりません。 そして生成された画面の情報を読み取らなければなりません。 ひとつのサイトでそんなことはやっていられません。 読んでくれるわけはありませんよ。

suffre
質問者

お礼

ありがとうございます。 トップページを開いたらすぐにjavascriptが起動してajaxでDBに情報を取得してトップページに表示されます。 検索エンジンのクローラーはjavascriptで生成したhtmlを拾ってくれますが、ajaxで生成したhtmlは拾ってくれないのでしょうか? ajaxも一応javascriptですし、違いがイマイチわかりません。 >検索エンジンのクローラはそういうオープンをかけるでしょうか。 オープンをかけるというのは「オープンするためのjavascriptを実行する」という意味でしょうか?

  • hue2011
  • ベストアンサー率38% (2801/7249)
回答No.1

動的コンテンツはキャッシュできません。 もちろん、PHPの中でechoやprintで出そうと書き込んである文字列はみえます。 が、DBからキーで引っ張って読み込んできたものを編集して表示するようなものが見えるわけがありません。 ちょっと考えてください。 たとえば図書館の蔵書検索システムで、キーに「漱石」とやって検索したときのリストは1ページに収まらず次頁前頁ボタンで切り替えます。 仮に10ページ分あるとして、8ページの3行目にある書名を検索エンジンのクローラがキャッシュすると思いますか。 そもそも「漱石」で検索するという何百万の1ぐらいしかないような事象を検索エンジンが発生させると想像しますか。

suffre
質問者

お礼

ありがとうございます。 少し説明不足だったのですみません。 トップページで検索フォームがあってDBから情報を引っ張ってくるというのは仰る通りでその部分が検索エンジンで見えないですよね。 ですが私のサイトのトップページを表示したらすぐにDBにアクセスしてランダムにコンテンツを表示するようになっているのです。 つまり検索フォームに何も入力しなくてもトップページを開いたらDBのデータを数十件表示するようにしています。 この表示をAjaxで呼び出しているのですが、トップページを表示してからAjaxでコンテンツを表示するまで2~3秒かかっているのが現状です。 しかも1日置きにDBから取得するコンテンツを変えています。 この教えてgooやOK WAVEでもトップページではDBからコンテンツを拾ってきて表示していますよね? このような構造でも検索エンジンはトップページのコンテンツを拾ってくれるのでしょうか?

関連するQ&A