カテゴリー
technology

CloudFrontでキャッシュ時間を長くしながらも運用作業量を下げる方法

amazon web services logo
CDNを使うのはキャッシュ目的であることがほとんどですが、スムースなアクセスを実現するにはキャッシュする時間を長くすべきです。もし無期限に設定したら1度オリジナルファイルを読めば後はCDNのサーバーまかせにできるので非常に効果的ですね。
しかし実際のサイトを運営していくのは必ずファイル更新作業があり、この同じファイルの更新の場面でCDNが入っていることで問題なります。キャッシュ時間を長くすることと更新を反映させることはCDN使う上では相反する行為だからですね。
世の中ではこうした問題を軽減するための手法がいくつか存在します。その一つがファイル名にバージョンを入れるRevving Filenamesという手法です。
要するに更新があったら「test.1.0.1.jpg」のようにファイル名にバージョン番号などを入れることで違うリソースとして認識させる手法のこと。これ完全に自動化されたデプロイ環境ならいいけど、手動でこれをするのは手間が多すぎしミスも発生しそう。
今回は、仮にHTML生成がアプリだとしてHTML中のパスを変えるのは簡単で、静的ファイルのファイル名を更新管理するのが難しいケースにしぼって、この問題を少しでも軽減すべくCloudFrontとEC2で試してみました。