読者です 読者をやめる 読者になる 読者になる

mod_pagespeed をちょっとだけ試してみた

Apache

GooglePage SpeedApache module 版 mod_pagespeed をインストールして、ちょっとだけ動きを見てみた。

インストールは Ubuntudeb パッケージで。

 $ wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb
 # sudo dpkg -i mod-pagespeed-beta_current_amd64.deb

config はデフォルトで入るものそのまま。

<IfModule pagespeed_module>
    SetOutputFilter MOD_PAGESPEED_OUTPUT_FILTER
    ModPagespeed on
    ModPagespeedUrlPrefix                "http://localhost/mod_pagespeed/"
    ModPagespeedFileCachePath            "/var/mod_pagespeed/cache/"
    ModPagespeedGeneratedFilePrefix      "/var/mod_pagespeed/files/"
    <Location /mod_pagespeed_statistics>
        Order allow,deny
        Allow from localhost
        SetHandler mod_pagespeed_statistics
    </Location>
</IfModule>

こんな HTML (ちょっと古めかしい) を /mod_pagespeed 以下に配置して GET すると……

<link rel="stylesheet" href="./css/global.css" type="text/css"> 
<link rel="stylesheet" href="./css/toppage.css" type="text/css"> 
<script language="javascript" src="./js/jquery-1.2.6.min.js"></script> 
<script language="javascript" src="./js/browserCheck.js"></script> 
<script language="javascript" src="./js/flashCheck.js"></script> 
<script language="javascript" src="./js/imageButtonClass.js"></script>
  • CSS が連結される
  • JavaScript が連結 + minify される
    • 一部は HTML 内にインライン展開
<link rel="stylesheet" type="text/css" href="http://localhost/mod_pagespeed/css/cc.d1e8868aa9e24cd3a0b1e662bb9a5180.global,s+toppage,s.css"> 
<script language="javascript" src="http://localhost/mod_pagespeed/js/jm.c43653aab9297a12091818b0247f65c2.jquery-1,o2,o6,omin,l.js"></script> 
<script language="javascript">function BrowserChecker(navigatorObj){this.versionStr=navigatorObj.appVersion;this.nameStr=navigatorObj.appName; // 以下略

小さい画像は data URI scheme で展開されたり、

<img id="siteId" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASAAA(略)">

外部の画像は mod_pagespeed 経由に URL が書き換えられて

<img src="http://localhost/mod_pagespeed/img/ce.fbeece41cce99327743774bb37b597f2.banner_s_blog,j.jpg">

もともと付いていなかった Cache-Control ヘッダが付与されたり。

$ lwp-request -m HEAD http://loacalhost/mod_pagespeed/img/ce.fbeece41cce99327743774bb37b597f2.banner_s_blog,j.jpg

200 OK
Cache-Control: public, max-age=31536000
Date: Thu, 04 Nov 2010 02:52:09 GMT
Server: Apache/2.2.12 (Ubuntu)
Vary: Accept-Encoding
Content-Length: 9065
Content-Type: image/jpeg
Last-Modified: Thu Nov  4 02:50:12 2010 GMT

動的に HTML を書き換えるので気になるパフォーマンスですが、10272 byte の HTML をフィルタ通して、最終的に 17852 byte になって (インライン展開される部分で大きくなる)、

Requests per second:    202.76 [#/sec] (mean)

Apache bench で計測して 200 req/sec ほど。(Athlon64 5400+)

ModPagespeed off だと

Requests per second:    3204.86 [#/sec] (mean)

ぐらいのマシンです。

よほどアクセスが多くないかぎり Web server の CPU は余ってることが多いと思うので、単に組み込むだけでクライアント側の体感速度が上がるならリーズナブルじゃないでしょうか。

mod_proxy と組み合わせる こともできるようですし、フィルタもいろいろある ようで、なかなか興味深いですね。