mod_sedでウェブを高速化

ウェブの高速化テクニックに、ページを構成するコンポーネントを複数のサブドメインでプロバイドするってのがあります。
例えばあるページに画像とCSSとjsが入っていたとして、

   index.html 
       +- css/style.css
       +- images/jp/logo.gif
       +- js/rollover.js

このうち画像だけでも別のサブドメインURIを指定する。

<a href="/index.html"><img src="/images/jp/logo.gif" alt="画像ですよ" height="41" width="283" /></a>

これを

<a href="/index.html"><img src="http://images.example.com/images/jp/logo.gif" alt="画像ですよ" height="41" width="283" /></a>

こうする。
そうすると、同時ダウンロードができるようになって云々でちょいとだけ早くなるそうな。
でもCSSとかHTMLとか全部書き換えるのは現実的ではない。
そこで、mod_sedですよ。画像ファイルに相当するURIを書き換えて外に出す。

まず通常のHTMLに対するフィルタ設定はこんな。

  SetOutputFilter DEFLATE
  OutputSed       "s/src=\"\/\(.*\.[gpj][pdin]e*[fg]\"\)/src=\"http:\/\/images.example.com\/\1/g"
  AddOutputFilterByType Sed ; DEFLATE text/html

画像っぽいサフィックスをもつURIを書き換える。
それとCSSに対するフィルタ設定はこんな。シングルクオートやダブルクオートで囲まれている場合、それに/で始まる場合、/がつかない場合などに対応。

        SetOutputFilter DEFLATE
        OutputSed       "s/\(url(['\"]*\)\/*\(.*\.[gj][pin]e*[fg]\)/\1http:\/\/images.example.com\/\2/g"
        AddoutputFilterByType Sed ; DEFLATE text/css

この正規表現、もう読めないな(笑)。さて、性能測定。
LAN内からトップページをabで100回、100同時ダウンロードで測定。
実施前はTime per requestが10ms程度だったのが、8〜9msに。およそ10%ほど早くなりました。
この処置を施したページで160ほどの部品で構成されていて、そのうち120くらいが画像ファイル。
ちょっと多すぎるな。それだけに効果があったのかもしれません。