« 404エラー用ページを用意しよう(apache編) | Main | ホスト級UNIXマシンにLinuxを入れよう »

October 22, 2004

HTTPヘッダー研究その2: 不要なHTTPレスポンスヘッダーは消しましょう

HTTPレスポンスヘッダーって無駄が多いですよね。何を持って無駄かというのも議論が分かれるところですが、大規模サイトになると1行の無駄でも数万~数百万アクセスという量になってかなり大きな無駄が発生してしまいます。これは当然ネットワーク費用にも跳ね返ってくるのでもったいない話しです。そこで今日はapacheのHTTPレスポンスヘッダーの削除方法を記して見ます。

 

【設定方法】 apacheの場合、いくつかのHTTPレスポンスヘッダーはhttpd.confの編集で操作できますが(例: ETagの場合は「FileETag none」とか)、それ以外のものになると基本的にはC言語で書かれているソースの該当個所を削除することになります。え、危険ではないかって?それがオープンソース(すなわち自己責任)というものなのでリスクは積極的に受け入れましょう。

 

ではまずは何を消すかを考えてみましょう。
---------------------------------------------------
% telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD / HTTP/1.0

 

HTTP/1.1 200 OK

 

Date: Mon, 18 Oct 2004 11:23:39 GMT
Server: Apache/1.3.31 (Unix)
Last-Modified: Fri, 10 Oct 2003 11:39:51 GMT ETag: "b7d74-64-3f869a87" Accept-Ranges: bytes Content-Length: 100
Connection: close
Content-Type: text/html
---------------------------------------------------
賛否両論あるかと思いますが、一旦上記赤字の部分としてみたいと思います。ということで以下の要領で該当部分をコメントアウトしてコンパイルしてみましょう。

 

src/main/http_core.c

 

/*
ap_set_last_modified(r);
ap_set_etag(r);
ap_table_setn(r->headers_out, "Accept-Ranges", "bytes");
*/

 

そしてapacheを再度起動してHTTPレスポンスヘッダーを出して見ると・・・
---------------------------------------------------
HTTP/1.1 200 OK
Date: Mon, 18 Oct 2004 11:23:39 GMT
Server: Apache/1.3.31 (Unix)
Content-Length: 100
Connection: close
Content-Type: text/html
---------------------------------------------------

 

成功です。

 

|

« 404エラー用ページを用意しよう(apache編) | Main | ホスト級UNIXマシンにLinuxを入れよう »

Comments

えーと、Proxyユーザから見るとその三行削られるのは害があって利はないんですけど。

利害コストのトレードオフをどう考えるかによりますが、僕はあんまりバランスよい考えとは思わないです。Apacheのバージョン上がるたびにパッチ当てるんだろうか?とか疑問ありますし。

まあ実験としては楽しいかもしれません。

Posted by: とおやま | October 28, 2004 05:20 PM

コメントありがとうございます。まずこのページをご覧になっている方に前もって断っておきたいのですが、このページではあくまでもapacheではHTTPレスポンスヘッダーの消し方の紹介であって、必ずしも上記の3行を消せば最適な設定になると言っているわけではありません。本番系サーバに適用する際は影響範囲をきちんと調べた上最適な内容を見つけ出し、結果についてはあくまでも自己責任でお願い致します。

ということで本題ですが、不勉強なのでバランスの良し悪しまでは考えが及ばなかったです。もしよろしければどのあたりがバランスが悪いと思われるか教えてもらえたら幸いです。よろしくお願い致します。


ちなみにヘッダーの内容を決める際はいろいろ調べたり実験したりするのは当然として、主要サイトのヘッダーを収集・分析して、どの程度までいじくっても大丈夫なのかを判断したり、人脈を辿って直接そのサイトに勤めている人に聞いてしまうこともあります。ただ誰に聞いてもどこまでやれば100%最適かという答えは誰も持ってないようですけど。

本当はデフォルトのままが一番楽なんですが、企業なので少しでもコストを下げたいということからここまでやってます。Apacheのバージョンが上がるたびにパッチ当ててます。(が、スクリプトを作って実行しちゃうので台数は多いですがそんなに大変な作業ではないです)

Posted by: sanonosa | October 28, 2004 05:47 PM

通りすがりの者です。(sanonosaさんの知り合いの者です。)

とおやまさんの考えるバランスのよい設定ってありますか?

条件が限定されていないと答えにくいとしたらYahoo!Japanや楽天など特定サイトの場合とかでも良いのですが。

Posted by: 通りすがり | October 28, 2004 05:55 PM

どーも。

バランスっていうのは、数十バイトのヘッダ削減のための労力と、そのヘッダを削減することの弊害が0ではない場合に、削ってまで、トラフィックを削るべき何だろうか、っていう疑問なんで、「バランスのいい設定」というのが今提示できるわけではないんです。

へたれで申し訳ないんですけど。

最近のエントリからのリンク先に書いてあった、ApacheのEtag生成方法がクラスタリング時にビミョーという話題は気づきいてませんでした。

あとの二行、Last-Modified はキャッシュProxyから見ると重要な情報だし、Accept-Ranges は、一部のブラウザについてるダウンロードの再開とか部分ダウンロード機能に一応必要な情報だし(使われてるかどうかしらないけど)、とかまあ、普段いらないっつやいらないんだけど基本的にあった方がいい情報ですよね?

かなり個人的なテイストの問題なんでしょうけど、「もしかしたら意味があるかもしれない」数十バイトを削るために特殊な仕様にするのってどうなんだろう? と私としては思います。

もちろん一バイトでも減った方がいいのは事実なんでしょうけども。

あんまりヘビートラフィックなサイトをあつかったことはないんで、甘い事言ってる部分があるかもしれないんですが...

Posted by: とおやま | October 30, 2004 11:27 PM

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference HTTPヘッダー研究その2: 不要なHTTPレスポンスヘッダーは消しましょう:

« 404エラー用ページを用意しよう(apache編) | Main | ホスト級UNIXマシンにLinuxを入れよう »