タイトルの通りで他に言うことがないのですが、RefreshHit したときは age を考慮してくれず、TTL がリセットされてしまうようです。
つまり、(CloudFront) - (Proxy) - (Server) のような構成で Proxy でキャッシュしている場合、そのキャッシュの TTL があるわけなのでレスポンスヘッダーには age がつきます。なのでキャッシュの一貫性を保つためには CloudFront の TTL からこの age を引いて欲しいわけです。
しかし、CloudFront の挙動は
-
CloudFront Cache Miss
- TTL = max-age - age
-
CloudFront Cache RefreshHit
- TTL = max-age
となります。
(CloudFront の TTL に max-age が設定される場合)
ただこれは CloudFront の仕様上しょうがないなーという感じです。というのも、RefreshHit したときはヘッダーも含めて CloudFront に残ってるキャッシュを使うため、オリジンのレスポンスヘッダーを全く考慮しないためです。ので、age をそもそも見てくれるはずもなく TTL は残ったキャッシュの max-age を設定し直します。