User-Agentによってはgzipが有効にならないことがある?
「Googleを支える技術」の244ページに次のような記述があった。
たとえば以前のクローラーでは、Webアクセスのときの「User-Agent」が次のようになっていました。
Googlebot/2.1 (+http://www.google.com/bot.html)Bigdaddy以降は、これが次のように変わっています。
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)この変更により、Webページのgzip圧縮が有効になるケースが多くなり、結果的にネットワークへの負担をさらに減らせるということです。
つまりヘッダに Accept-Encoding: deflate, gzip をつけていてもgzipを有効にしてくれないサーバがあるということ。
色々とネットを探ってみると、GoogleのMatt Cutts氏のブログの「Crawl caching proxy」という記事の中で言及されていた。
For example, the pre-Bigdaddy webcrawl Googlebot with user-agent “Googlebot/2.1 (+http://www.google.com/bot.html)” would sometimes allow gzipped encoding. The newer Bigdaddy Googlebots with user-agent “Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)” are much more likely to support gzip encoding.
GoogleがクローラーをBigdaddyという集中管理システムに移行したのが2005年末から2006年にかけてらしいので、そんなに古い話でもない。今でもそのようなサーバはちらほらあるということだろう。
たとえば Apacheのmod_deflateのドキュメントにはgzipを扱えないNetScape 4.x系のブラウザに対してgzipを無効にする設定が書かれていたりする。
BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
こんな感じでヘッダのUser-Agentからgzipの有効/無効を判定することはあるようだ。サーバによって設定が様々だから、以前のGoogleのUser-Agentだとgzipを無効にされるケースがあったということになる。
ブラウザとgzipの関係については Which browsers can handle ‘Content-Encoding:’? あたりが詳しい。
つまりはクローラーのユーザーエージェントは Mozilla/5.0 (compatible; で始まる文字列にしておいたほうがよさそう、ということになる。
だから検索エンジンのクローラーはほとんどこの書式なのね。勉強になった。
Googleを支える技術 ~巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)
コメントを残す