2005年02月13日

BLOGサービス調査(2/2)

前回の続きです。

調査項目及び調査方法

以下の5項目を調査しました。
  • If-Modified-Sinceの対応
    レスポンスヘッダにLast-Modifiedフィールドが含まれており、かつ、それを次のリクエストヘッダのIf-Modified-Sinceフィールドに設定したとき、ステータスコード304が返ってくれば○、どれかが欠けていれば×です。
    調べる直前にFeedが更新されることも考え、ステータスコード200が返ってきた時にLast-Modifiedが変化していれば、再度チェックします。
  • If-None-Matchの対応
    Last-Modifiedの代わりにETagを見て、If-Modified-Sinceの代わりにIf-None-Matchを使うこと以外はIf-Modified-Sinceと同様です。
  • Accept-Encoding: gzipの対応
    リクエストヘッダのAccept-Encodingフィールドにgzipを設定したとき、レスポンスヘッダのContent-Encodingフィールドがgzipになっていれば○、そうでなければ×です。
  • Accept-Encoding: deflateの対応
    gzipではなくdeflateを使う以外はgzipと同様です。
  • Accept-Encoding: compressの対応
    gzipではなくcompressを使う以外はgzipと同様です。

調査結果

以上の調査方法に基いてテストするスクリプトを書いて走らせてみたところ、 以下のような結果になりました。

BLOGサービス名 If-Modified-Since If-None-Match gzip deflate compress
AOLダイアリー × × ×
ブログ人 × × × ×
Yahoo!ブログ × × × × ×
LOVELOG × × ×
JUGEM × × ×
ココログ × ×
ウェブリブログ × × × ×
DoBlog × × × ×
ドリコムブログ × × ×
エキサイトブログ × × × × ×
BLOCKBLOG × × × × ×
gooブログ × × × × ×
はてなダイアリー × × × × ×
ヤプログ × × ×
NAVERブログ × × × × ×
楽天広場 × × × × ×
SweetBox × × ×
のブログ × × × × ×
ブログ通信 × × × × ×
信州FM × × × × ×
News-Handler × × × × ×
バニー × × × × ×
シーサー・ブログ × × ×
FC2 ブログ × × × × ×
すくすくブログ × × × × ×
関西どっとコムblog × × × × ×
アメーバブログ × × × × ×
bloguru × × ×
尾道Blog × × × × ×
JENS WeBlog × × ×
ele-log × × ×
2ch Blog × × ×
Autopage × × ×
じゃくしー × × ×
melma blog × × × × ×
moblo × × × × ×
livedoor Blog × × ×
Diarynote × × × × ×

考察

If-Modified-Sinceに対応しているのは18/38、If-None-Matchは15/38。結構少ないですね。

まずこれらのフィールドを使うことによる効果について考えてみます。
RSS Feedは、少ないもので5Kバイト、普通は10Kバイトあたり、多いもので100Kバイトに到達します。
ステータスコード200を返すときは全部送られますが、ステータスコード304を返すときはヘッダだけなので200バイト弱のデータで済みます。ということは、データ量が1/25倍~1/500倍になるわけです。
素人考えながら、とても効果が大きい気がします。

なお、If-None-Matchに対応しているサービスは、If-Modified-Sinceにも対応していますので、RSSリーダーがIf-None-Matchに対応する必要はなさそうです。If-Modified-Sinceで十分ですね。

それでもって、Accept-Encodingに対応しているのがココログしかありません。1/38です。 これはびっくりです。
RSSリーダー側の対応も(調べてませんが)弱いと思いますが、まさかこれだけ数あるサービスのうち1つだけとは・・・。何か対応してはまずい理由でもあるんですかね。
ちなみにgzip圧縮された場合、データ量は1/3~1/4になっています。 If-Modified-Sinceほどの効果はないですね。

しかしこれだけサービス側の対応が弱いと、RSSリーダー側もまだgzipに対応する必要は無いのかもしれませんね。鶏が先か卵が先かという話かもしれませんが。

BLOGサービス提供者さんがこの記事を読むことになるのかどうかは分かりませんが、 とりあえず一言。
If-Modified-Sinceだけでも対応しませんか。 特に「gooブログ」や「はてなダイアリー」など大勢のユーザを抱えている所は。
結構な帯域節約になるのではないかと思います。

その他色々

deflateやcompressに対応したサービスはありませんが、そもそもdeflateやcompressに対応したサイトって見たことありません。Googleもgzipだけです。gzipだけあれば十分ということなんでしょうね。

「ブログ人」と「ブログ通信」は、If-None-Matchに×が付いてますが、実はETagには対応しているのです。でもIf-None-Matchには未対応。何のためのETagなんだろう・・・。

Accept-Encodingに対応しているサイトがほとんど無いため、調査用スクリプトの方を疑って色々調べているときに分かったのですが、GoogleのトップページってAccept-EncodingだけではなくUser-Agentまで見てgzipで圧縮するかどうか決めているみたいですね。User-AgentがTest Applicationのときは圧縮してくれませんでしたが、Firefoxと同じものにしてみたら圧縮してくれました。不思議不思議。

投稿者 MASATO : 2005年02月13日 00:33 | トラックバック
コメント

あらかじめ作成しておくのは良さそうですね~
問題はどの程度の更新頻度かですね~
更新頻度が少ない場合にはかなりのこうかが期待できそうですね~

ちょっと試しにやってみようかな~

Posted by: 瞳子 : 2005年02月14日 00:40

RSS Feedが更新されたときにgzip圧縮したデータを作成してその後はそれを送るだけ、というのはどうでしょう。

Posted by: MASATO : 2005年02月13日 19:35

GZIP圧縮はRSSフィード程度に使うと逆にサーバー側のCPUパワー無駄に使いそうです。
ブログはHTMLでファイル吐いちゃった方が楽だとは思いますね。
RSSもファイルとして出しちゃった方が楽なはずです。

Posted by: 瞳子 : 2005年02月13日 18:06
コメントする









名前、アドレスを登録しますか?