非常に高速なWebサーバとして注目を集めるlighttpdですが、基本的なチューニングも必要です。
ここでは、「Google Page Speedでサイトを高速化」への補足としてlightyでのExpireヘッダやコンテンツのgzip圧縮の設定方法を書いておきます。
mod_expireを用いてブラウザキャッシュを有効に
lighttpdで静的コンテンツに対してブラウザキャッシュを有効とするには、mod_expireを使います。
設定方法は非常に簡単ですが、一応。
まず、lighttpd.confでmod_expireを有効にします。
"mod_expire",
デフォルトでコメントアウトされているはずなので、先頭の「#」を除去してやります。
次に、対象とするファイルの指定と、キャッシュの期限を設定。
同様にlighttpd.confを”expire”などで検索すると、次のような行があると思います。
#### expire module #expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")
ここに設定を追加します。
例えば画像フォルダが/img/などに決まっていて、その下にあるファイルは全てキャッシュ対象とするような場合は、次のような記述になります。
expire.url = ( "/img/" => "access 1 months" )
これは「1ヶ月有効」という意味。”1 months”という表現が若干気持ち悪いですが。
或いは、「拡張子が静的コンテンツっぽいものを対象にする」ような場合は、次のように書きます。
$HTTP["url"] =~ "\.(js|css|gif|jpg|png|swf|pdf)$" { expire.url = ( "" => "access 10 days" ) }
設定後、lighttpdを再起動してリロードすると、ヘッダが付くようになっているはずです。
mod_compressでコンテンツを圧縮
jsやcssなどのテキストファイルはdeflate圧縮することでネットワークトラフィックを大きく軽減できます。
mod_compressを用いれば、指定したコンテンツを圧縮して保存しておき、UAがAccept-Encodingにgzipやdeflateを持っていればそれを返すようになります。
mod_compressを有効にします。
"mod_compress",
lighttpd.confのコメントをはずしてやります。
圧縮対象のファイルタイプと、キャッシュの保存ディレクトリを指定します。
#### compress module compress.cache-dir = "/path/to/cache/dir/" compress.filetype = ("text/plain", "text/html", "text/javascript", "text/css")
キャッシュディレクトリには当然、書き込み権限が必要です。
ここで若干注意が必要なのは、Virtual Hostを設定している場合。
キャッシュディレクトリにはパスだけを頼りにファイルが置かれるため、
a.example.com/path/to/file
と
b.example.com/path/to/file
は、同じキャッシュを共有することになってしまいます。
これを避けるためには、vhosts毎にキャッシュディレクトリを切り分けてやります。
$HTTP["host"] == "a.example.com" { compress.cache-dir = "/path/to/cache/dir/a/" } $HTTP["host"] == "b.example.com" { compress.cache-dir = "/path/to/cache/dir/b/" }
設定後、lighttpdを再起動してやれば完了です。
FirebugやTamplerDataで流れているものを確認したり、キャッシュディレクトリに然るべきファイルが出来ているかをチェックしてください。
Related posts:
[...] – Lighttpd – lighty labs ■Lighttpd/パフォーマンス – Linux Tips ■[lighttpd] ExpireとCompressでサイトを高速化 | Screw-Axis Lighttpdでのチューニング. tweetmeme_url = [...]