今週の学び part 2
HTTP header
Cache-Control
レスポンスヘッダーに関しては、アプリケーションサーバーにて値が設定される。
CloudFront
ここでいうビューワーというのは、CloudFront にリクエストを送るクライアントのこと。
CloudFront-Viewer-Address
ビューワーの IP アドレスと、リクエストのソースポートを示します。例えば、198.51.100.10:46532 のヘッダー値は、ビューワーの IP アドレスが 198.51.100.10 で、リクエストのソースポートが 46532 であることを意味します。
とのこと。
Terraform
今回は CloudFront で OGP 画像[^OpenGraphProtoclの略。例えばSlackにURLを貼ると、画像とタイトルがついたプレビューが表示されると思う。その画像のこと。]をキャッシュする際の設定を Terraform 側で指定した。
resource "aws_cloudfront_cache_policy" "og_images" {
name = "some-name"
comment = "Some comments."
min_ttl = 0
default_ttl = 86400
max_ttl = 3153600
parameters_in_cache_key_and_forwarde_to_origin {
cookies_config {
cookie_behavior = "none"
}
headers_config {
header_behavior = "none"
}
query_strings_config {
query_string_behavior = "none"
}
}
}
Cache-Control: max-age=100000000 を設定しても、CloudFront のキャッシュ有効期間は max_ttl の 3153600 秒に制限される。s-maxage も指定されている場合は、そちらの値が優先され、同じ上限が適用される。max-age、s-maxage、Expires による有効期間の指定がなければ、default_ttl が使われる。
今回 min_ttl を 0 にしたのは、アプリケーションサーバーが Cache-Control: no-store を返した際に、CloudFront でのキャッシュを防ぐため。例えば min_ttl が 10 の場合は、no-store を返しても CloudFront は最低 10 秒間キャッシュする。