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"