Apache
概要
ApacheはWeb Serverの1つ。
Memo
高速化
いくつかの高速化の方法がある。
gzip圧縮して送信する方法。転送サイズが小さくなり高速化する。CPU負荷は上がる。有効にするとレスポンスヘッダに Content-Encoding: gzip
などがつく。
LoadModule deflate_module modules/mod_deflate.so <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/wasm AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/json </IfModule>
ブラウザにキャッシュして、読み込みを減らす方法。サーバとの通信が発生しなくなり高速化する。更新を反映しなくなる可能性があるので、更新の少ない画像などに向いている。
<ifModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 seconds" ExpiresByType image/jpg "access plus 1 days" ExpiresByType image/jpeg "access plus 1 days" ExpiresByType image/png "access plus 1 days" ExpiresByType image/gif "access plus 1 days" ExpiresByType application/wasm "access plus 1 days" ExpiresByType application/javascript "access plus 1 days" ExpiresByType application/x-javascript "access plus 1 days" </ifModule>
確立したコネクションを使いまわして、高速化する設定。普通に1リクエストごとに接続するが、接続にはコストがかかる。複数リクエストでつないだままにして高速化する。
KeepAlive On MaxKeepAliveRequests 1000 # 1000リクエストごとにコネクションを使いまわす KeepAliveTimeout 5 # 5秒通信がないと、コネクションを切る
リクエストを見ていると、あまり知られてないファイル形式のファイルサイズが大きいが、圧縮やキャッシュが適用されていなかった。これらに独自のContent-Typeを与え、高速化を適用する。
AddType application/original .tif
AddOutputFilterByType DEFLATE application/original
ExpiresByType application/original "access plus 1 days"