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"

Tasks

Reference

Archives