Google.comは検索結果の表示にAjax使ってる!!

Add Tab Index for Googleの修正をしようとして気付いたんですが・・・。
Google.comは検索結果の取得から表示までAjaxで行っています。
(注:書いてから調べたんですが、一部ユーザのみのようです。これについてはこちらの方のサイトが詳しいです)


最初は検索結果のURLが日本のGoogleと違ってるなーぐらいにしか思わなかったんですが、調べてびっくり。
検索ボタンを押した瞬間、XMLHttpRequestで通信して検索結果を表示するためのJavaScriptを取得、それをevalしてページを更新しているみたいです。


URLはトップページが「http://www.google.com/」で、検索結果は「http://www.google.com/#hl=en&q=Google&btnG=Google+Search&aq=f&oq=Google&fp=OlAWEoQSgPM」となっています。
パラメータを「?」以降に埋め込む(GETパラメータとして)のではなく、「#」以降にページ内URLとして埋め込んでいる模様。
JavaScriptでlocation.replaceをしているんだと思います)
なので、戻るや進むもできますし、F5を押しても大丈夫です。


たしかにサーバでHTMLを丸ごと取得するよりも書き換え用のJavaScriptだけを取得した方がデータ量が減るからその分早く表示できそうだし、データ量が約半分(8KB->4KB)になってますが・・・。
これだけのためにここまで手の込んだことをするってのにびっくりです。
サーバ負荷軽減を狙っているのかもしれません。


いつから変わったかは不明です。
でも、Add Tab Index〜を作った時には普通にページ遷移だったはず。



ちなみに、この方法でAdd Tab Index for Googleの戻るで動かないバグを直そうと思ってたのに先を越されました(泣)
location.replaceで#を加えてページ遷移直前のタブインデックスを保存しておけば元のフォーカスを復元できるというやり方を考えてました。


ただ、Ajaxを使われるとページ遷移したこと自体を検出できないからGreacemonkeyを動かせない・・・。
ちょっと考え直します。