Hello〜、ナスです。
先日、社内で勉強会があったんですが、某案件で一番勉強になったことを発表するために資料作ってたら大事なことを思い出したので、ここでも書いておこう。
キャッシュすることはとても大事なこと
CloudFrontでオブジェクトをキャッシュすることはとても大事です。(動的コンテンツは除く
そもそも、CloudFrontの大きな役目は、
- バックエンドのwebサーバの負荷を抑える
- 世界各地にあるエッジロケーションにもキャッシュを配置してレイテンシを低く抑える
だと思っているので、キャッシュしないとCloudFrontを使う意味があんまし無いんです。
静的サイトなのになぜかキャッシュしないと言われた
「12:00ちょうどにあるページを公開したいから、CloudFrontでキャッシュしないようにして」
ある時、この言葉を聞いて脳みそが???ってなったのを覚えてる。htmlしかないのにキャッシュなし?どういうことよ?
気持ちはわかるんですよ。たぶんお客さんから「指定時刻ぴったりにページ公開や!」ってな感じで言われたんやろなって。でもそれCloudFront使う意味ないやん?
そんな時でもキャッシュはしよう!
上の例でも、CloudFrontでキャッシュするように設定するのがベストです。1秒でいいので、キャッシュするようにします。
ん?1秒だけキャッシュする意味ってあるの?って感じですが、この1秒を設定するしないで全然違います。
CloudFrontは、キャッシュしない設定にしてるとアクセスがあるたびに毎回バックエンドにオブジェクトを取りに行きますが、1秒でもキャッシュする設定にしてると、その時間間隔でオブジェクトに更新があるかどうかをまず確認して、更新がなければそれで終わりです。
ということは、毎回オブジェクトを取ってくるトラフィックが流れてるか、毎回更新有無の確認トラフィックだけ、という違いが出てきてレイテンシもバックエンドの負荷状況も全然変わってきます。このことは、AWSのCloudFrontのドキュメントにも書かれています。(さらっとですけど
docs.aws.amazon.com
というわけで、CloudFront使うならガンガンキャッシュしましょう!