hns - 日記自動生成システム - Version 2.19.7

void GraphicWizardsLair( void ); //

otsune GWL
FreeBSD, AfterEffects, RETAS, animo, DigitalAnime, Linux, Mac OS, Win2k

[Who is otsune?] [title] [message] [Policy] [注目エントリー] [top]
Twitter Status :


Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい

検索式:

先月 2005年08月 来月
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31


2005年08月11日(木) [長年日記]

#1 [rss][neta] トラフィックの多いblog事業者は、ぼちぼちRSSフィードの負荷対策に対応してほしい

kokepiの日記 - RSSの更新チェックによるトラフィックを削減するための仕様「RSS Ping」_ を読んでちょろっと検索してみた。
httpで負荷を下げる仕組みはいくつか有る。
「何月何日の何時のデータから更新されていますか?」と問い合わせ時に聞くのがIf-Modified-Sinceヘッダー。
「キャッシュデータのハッシュ(ETag)は○○です。これと一致しているデータですか?」と聞くのがIf-None-Matchヘッダー。これは同一のデータだったら同一のEtagになるという仕組みを利用している。
この辺りは @IT:事例に学ぶWebシステム開発のワンポイント(12)_ が分かりやすく解説している。
んでだ。
MASATOの開発日記: BLOGサービス調査(2/2)_ を見てみると、はてなダイアリー等のblog事業者はIf-Modified-SinceにもIf-None-Matchにも対応しておらず、Simple Stupidに200で毎回RSSを返すところがチラホラあるみたいだ。
理由は色々と有るんだろうなぁ。
RSSアグリケーター側がIf-Modified-Since等に対応していなかったりして、毎回バカのようにデータをダウンロードすることが多かったりするから、苦労して対応する必要がなかったとか。
あと負荷分散でサーバーを分離しているとi-nodeの違いでEtagを統一するのがややこしいからIf-None-Matchをサポートするのがめんどくさいとか。

1 確認の仕方:

上記のBLOGサービス調査はちょっと古い一覧なので、自分で確認してみることに。
なんたってblogサービス技術は数日もあればすぐに変わっちゃうからな。
Goatee: efficient RSS over HTTP_ によるとwget -Sで簡単に確認できるみたい。
まず普通にはてなダイアリーからRSSをwgetで取得。
>wget -S http://d.hatena.ne.jp/otsune/rss
--06:36:27--  http://d.hatena.ne.jp/otsune/rss
           => `rss'
Resolving d.hatena.ne.jp... 221.186.129.146, 61.196.246.67, 221.186.146.29
Connecting to d.hatena.ne.jp|221.186.129.146|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 200 OK
  Date: Wed, 10 Aug 2005 21:36:49 GMT
  Server: Apache/1.3.27 (Unix)  (Vine/Linux) mod_perl/1.29
  last-modified: Wed, 10 Aug 2005 09:46:15 GMT
  etag: f77052105e8f1e6cd99141478cbbee93
  Content-Type: application/xml; charset=utf-8
  Vary: Accept-Encoding
  Connection: close
Length: unspecified [application/xml]

    [ <=>                                 ] 13,510        --.--K/s             

06:36:28 (102.43 KB/s) - `rss' saved [13510]
次にEtagを付けてIf-None-Matchを送ってみる
> wget -S --header='If-None-Match: f77052105e8f1e6cd99141478cbbee93' http://d.hatena.ne.jp/otsune/rss
--06:37:09--  http://d.hatena.ne.jp/otsune/rss
           => `rss.1'
Resolving d.hatena.ne.jp... 221.186.129.146, 61.196.246.67, 221.186.146.29
Connecting to d.hatena.ne.jp|221.186.129.146|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 200 OK
  Date: Wed, 10 Aug 2005 21:37:31 GMT
  Server: Apache/1.3.27 (Unix)  (Vine/Linux) mod_perl/1.29
  last-modified: Wed, 10 Aug 2005 09:46:15 GMT
  etag: f77052105e8f1e6cd99141478cbbee93
  Content-Type: application/xml; charset=utf-8
  Vary: Accept-Encoding
  Connection: close
Length: unspecified [application/xml]

    [ <=>                                 ] 13,510        --.--K/s             

06:37:10 (747.16 KB/s) - `rss.1' saved [13510]
うーん、200で普通にダウンロードになっているね。
次にIf-Modified-Sinceを付けてみる。
> wget -S --header='If-Modified-Since: Wed, 10 Aug 2005 21:37:31 GMT' http://d.hatena.ne.jp/otsune/rss
--06:53:00--  http://d.hatena.ne.jp/otsune/rss
           => `rss.2'
Resolving d.hatena.ne.jp... 221.186.129.146, 61.196.246.67, 221.186.146.29
Connecting to d.hatena.ne.jp|221.186.129.146|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 304 Not Modified
  Date: Wed, 10 Aug 2005 21:53:22 GMT
  Server: Apache/1.3.27 (Unix)  (Vine/Linux) mod_perl/1.29
  Connection: close
  Vary: Accept-Encoding
06:53:00 ERROR 304: Not Modified.
おお、304が帰ってきて負荷軽減に対応している。
ということは、はてなダイアリーRSSに関して言えば、RSSリーダー側でちゃんとIf-Modified-Sinceヘッダーをサポートしているモジュールなりライブラリを使っていれば負荷軽減にはなるんだな。
Permalink: http://www.otsune.com/diary/2005/08/11/1.html#200508111
trackback
このエントリーを含むはてなブックマーク del.icio.us livedoor Clip View blog reactions
Last Updated 2005-08-11 00:00:00 By otsune