Apache勉強(3)
教材:日経Linux 2008/7連載 実践!Webサーバー構築 初めてのApacheモジュール
通信・応答速度を向上させるモジュール
(1)mod_deflate (http://httpd.apache.org/docs/2.0/ja/mod/mod_deflate.html)
デメリット:CPUに負荷がかかる。GIFやJPEGなど既に圧縮されているデータは返ってマイナス効果。
モジュールがインストールされているか確認
設定前
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
GET / HTTP/1.1
Host: 127.0.0.1
User-Agent: TEST-Browser
Accept-Encoding: deflate,gzipHTTP/1.1 200 OK
Date: Sat, 20 Mar 2010 22:45:43 GMT
Server: Apache/2.2.15 (Unix) DAV/2
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "14ffaa-2c-3e9564c23b600"
Accept-Ranges: bytes
Content-Length: 44
Content-Type: text/html
httpd.conf編集
DeflateCompressionLevel 5
SetOutputFilter DEFLATE
設定後
# telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
GET / HTTP/1.1
Host: 127.0.0.1
User-Agent: TEST-Browser
Accept-Encoding: deflate,gzipHTTP/1.1 200 OK
Date: Sat, 20 Mar 2010 22:49:05 GMT
Server: Apache/2.2.15 (Unix) DAV/2
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "14ffaa-2c-3e9564c23b600"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 55
Content-Type: text/html
コンテンツごとに圧縮するか指定し、圧縮したらログに残す
httpd.conf編集
#圧縮率設定
DeflateCompressionLevel 5
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/5 gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n(%{ratio}n%%)%{User-agent}i'deflate
CustomLog logs/deflate_log deflate
ログを確認
# cat /usr/local/apache2/logs/deflate_log
"GET /deflate/ HTTP/1.1" 92/127(72%)Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTBDFff GTB7.0 (.NET CLR 3.5.30729)
"GET /deflate/img/linux-logo.jpg HTTP/1.1" -/-(-%)Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTBDFff GTB7.0 (.NET CLR 3.5.30729)
※プロキシサーバーが介在している場合はVaryヘッダーの追加等の対策が必要
(2)mod_cache
データをApache内のディスクやメモリーにキャッシュする。
追加で
ディスクにキャッシュ → mod_disk_cache
メモリにキャッシュ → mod_mem_cache
が必要
モジュールがインストールされているか確認
インストールされていないようなのでDSOを使って組み込み
mod_cacheのDSOインストール
# cd /usr/local/src/httpd-2.2.15/modules/cache/
# /usr/local/apache2/bin/apxs -i -a -c mod_cache.c cache_util.c cache_storage.c
mod_mem_cacheのDSOインストール
# /usr/local/apache2/bin/apxs -i -a -c mod_mem_cache.c cache_cache.c cache_hash.c cache_pqueue.c
mod_disk_cacheのDSOインストール
# /usr/local/apache2/bin/apxs -i -a -c mod_disk_cache.c
設定は記事読むだけで暇なときに実践