nginxで簡単な画像のキャッシュコントロール
locationディレクティブの内側で、expiresを設定するだけ。
expiresディレクティブは、httpヘッダーのCache-ControlとExpiresを付加してくれる。
追加するディレクティブ
locationディレクティブの指定はこちらの
nginx連載5回目: nginxの設定、その3 - locationディレクティブ - インフラエンジニアway - Powered by HEARTBEATS
が日本語でわかりやすい。
要約すれば必要な設定は、~*で正規表現のlocationディレクティブを追加するということ。このディレクティブの実行後に前方一致の他のlocationディレクティブが実行される。
expiresは指定できる単位がいろいろある。ドキュメントはこちら:
Configuration file measurement units
expires自体のドキュメントはこちら:
Module ngx_http_headers_module
つまり、
locationディレクティブを追加する。(既存なら不要)- 上のディレクティブの内側に
expiresディレクティブを指定する。
の2点を行えばいい。
実装例
画像リソースのキャッシュを指示する例。画像は基本不変なのでもっと長く指定してもいい。
server {
... 前方一致のlocationディレクティブなど
...
location ~* \.(gif|jpg|png)$ {
expires 30d;
}
}
こうしておけば、前方一致のディレクティブも実行され、httpヘッダにCache-ControlとExpiresが付与される。
おわり
上記の例は、ブラウザのキャッシュの有効期間の指定になる。
期限以外も指定したいなら、add_headerディレクティブを使用する必要がある。
指定するフォーマットなどは、Cache-Control - HTTP | MDNが詳しい。
MDN万能だなあ。
以上です。
広告
https://amzn.to/33jN7ZP


