Skip to content

AWS CloudFront でキャッシュにヒットしているか?を確認する

AWS の CloudFront を利用すると、手軽に/短時間で CDN サービスを利用することが出来ます。CloudFront へのアクセス時に「キャッシュにヒットしているか?否か?」は X-CacheAge というヘッダを見ると分かります。

X-Cache ヘッダの意味

X-Cache は以下のような値を返すようです。

X-Cache 意味
Miss from cloudfront キャッシュが存在しなかった(=キャッシュする)
Hit from cloudfront キャッシュにヒットしている
RefreshHit from cloudfront キャッシュの有効時間を超えているが、コンテンツに更新が無いのでキャッシュを再利用する

検証してみる

CloudFront のキャッシュ時間を 1 分にして動作を検証してみます。検証用に以下のようなスクリプトを書きました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/sh

URL='http://CLOUD-FRONT/'
SECONDS='180'

for i in `seq 0 ${SECONDS}`
do
  NOW=`date +"%M:%S"`
  echo $NOW `curl --head ${URL} 2> /dev/null | grep X-Cache`
  sleep 1
done

このスクリプトを実行すると以下のような結果になりました。結果を見ると X-Cache の値が…

  1. 初回は Miss from cloudfront
  2. 次回からは Hit from cloudfront
  3. キャッシュの有効期限を迎える度に RefreshHit from cloudfront

…を返しているのが分かります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
./test-croud-front-cache.sh
00:01 X-Cache: Miss from cloudfront
00:02 X-Cache: Hit from cloudfront
00:03 X-Cache: Hit from cloudfront
    ・
    ・
    ・
00:58 X-Cache: Hit from cloudfront
00:59 X-Cache: Hit from cloudfront
01:00 X-Cache: Hit from cloudfront
01:01 X-Cache: RefreshHit from cloudfront
01:02 X-Cache: Hit from cloudfront
01:03 X-Cache: Hit from cloudfront
01:04 X-Cache: Hit from cloudfront
    ・
    ・
    ・
01:58 X-Cache: Hit from cloudfront
01:59 X-Cache: Hit from cloudfront
02:00 X-Cache: Hit from cloudfront
02:01 X-Cache: RefreshHit from cloudfront
02:02 X-Cache: Hit from cloudfront
02:03 X-Cache: Hit from cloudfront
02:04 X-Cache: Hit from cloudfront