AWS の CloudFront を利用すると、手軽に/短時間で CDN サービスを利用することが出来ます。CloudFront へのアクセス時に「キャッシュにヒットしているか?否か?」は X-Cache
や Age
というヘッダを見ると分かります。
X-Cache ヘッダの意味
X-Cache
は以下のような値を返すようです。
X-Cache | 意味 |
---|---|
Miss from cloudfront | キャッシュが存在しなかった(=キャッシュする) |
Hit from cloudfront | キャッシュにヒットしている |
RefreshHit from cloudfront | キャッシュの有効時間を超えているが、コンテンツに更新が無いのでキャッシュを再利用する |
検証してみる
CloudFront のキャッシュ時間を 1 分にして動作を検証してみます。検証用に以下のようなスクリプトを書きました。
#!/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
の値が…
- 初回は
Miss from cloudfront
- 次回からは
Hit from cloudfront
- キャッシュの有効期限を迎える度に
RefreshHit from cloudfront
…を返しているのが分かります。
./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