[Edit][Create New]
[ IndexPage / ネットとプログラミング / web296 / No32.txt ]

No32.txt

前回のweb296情報源にも出ていましたが、先週、おそらく日本で一番有名な巨
大BBS(掲示板システム)サイト「2ちゃんねる」が突如閉鎖の危機においこまれ
ました。理由は「転送量(トラフィック)の増加で回線使用料が支払えなくなっ
たから」だそうで、詳しくはweb296情報源のリンクに譲りますので、興味があ
りましたら読んでみてください。

初心者のための2ちゃんねる存続危機解説
http://home.att.ne.jp/wind/monsta/ga/2ch_kiki.htm
アブナイ?いや危ない!2ちゃんねるに迫る経営危機
http://slashdot.jp/article.pl?sid=01/08/26/0034208

要は、アクセスが増えすぎたので回線使用料が跳ね上がり、転送量を今すぐ1/
3にしなければ1週間以内に閉鎖、という話の流れだったようです。普通なら
「そんなものは無理」となってそのまま閉鎖、というオチに決まっていますが、
この時はそうではありませんでした。

読者のみなさんはここで「何だ、今までのWeb技術の話の流れと、何の脈絡も
ないじゃないか」と思われたかも知れませんが、これがおおありなのです。

実はこの時2ちゃんねる側は、ある方法を使って転送量を目標の1/3に迫る1/2
まで削り、月末の閉鎖を免れたのです。この時に転送量削減に大きく貢献した
解決策は2つありました。

(1)If-Modified-Since: への対応
(2)gzip圧縮への対応

聞いたことのない言葉かも知れませんが、この2つが、HTTP/1.1の仕組み、す
なわち今まで解説してきたWeb技術の内容に大きく関係してくるのです。いい
塩梅に、今までHTTP/1.1の仕組みや、HTTPで用いられるヘッダ情報についての
概略は解説してありますから、今回からは数回に分けて、トラフィックを1/2
にしたこれらの対応の具体的な内容を解説していきたいと思います。

その前にまず、どうやって同じコンテンツで転送量を下げる事ができるのか、
その概略を解説しましょう。

Webでは古くから、転送量を抑えるために「キャッシュ」というシステムが使
用されてきました。一度読み込んだファイルは二度目以降はWebから取得せず
に、ローカルのハードディスクに溜めた「キャッシュ」と呼ばれるファイル、
要するに「写し」にアクセスすることによって、無駄な転送を避けるというも
のです。

今ではHTTPのバージョンが上がり、ブラウザとHTTPサーバーが相互にファイル
の更新情報をやりとりして、ファイルが更新されていた場合のみ、ブラウザは
コンテンツをWebから取得する仕組みが出来ているのですが、BBSのような常に
情報が書き換わる可能性のあるもの(ASPやCGI、PHPなど)は、基本的に更新情
報のやりとりは行わず、常にWebからファイルを取得するような設定になって
います。

これを、BBSのログが書き換わった時だけ転送を行い、新たなログがない時は
キャッシュを利用して転送を抑制させる手法が、(1)にあたるわけです。

次に圧縮です。みなさんはソフトウェアをFTPサイトからダウンロードする際、
おそらく圧縮されたデータをダウンロードしてローカルで展開していますよね
? また、大きなファイルをメールで送る時も、わざわざ圧縮する方が多いので
はないかと思います。しかしHTTPは本来かなり冗長なプロトコルで、圧縮など
の仕組みがありませんでした。つまり、100kbのHTML文書があれば、100kbその
まま転送していたのです。現在ではこれを圧縮してからブラウザに送りつけ、
ブラウザがこれを自動的に展開する仕組みが出来ていますが、CPUへの負荷の
問題などから、思ったほど使われていません。2ちゃんねるも実際、無圧縮で
BBSのデータを転送していました。これを圧縮させるようにして、物理的な転
送量を半減させる手法が、(2)にあたるわけです。

さて今回は概略で終わってしまいましたが、次回から実際に、2ちゃんねる騒
動の時、どのようなシステムの変更が行われたのか、具体的に解説していこう
と思います。