nginxで簡単なリソースのキャッシュコントロール

nginxで簡単な画像のキャッシュコントロール

locationディレクティブの内側で、expiresを設定するだけ。 expiresディレクティブは、httpヘッダーのCache-ControlExpiresを付加してくれる。

追加するディレクティブ

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-ControlExpiresが付与される。

おわり

上記の例は、ブラウザのキャッシュの有効期間の指定になる。

期限以外も指定したいなら、add_headerディレクティブを使用する必要がある。 指定するフォーマットなどは、Cache-Control - HTTP | MDNが詳しい。

MDN万能だなあ。

以上です。


広告

Bitly
タイトルとURLをコピーしました