読者です 読者をやめる 読者になる 読者になる

時雨に舞う

プログラミングや技術情報などの備忘録

awsのCloudFrontを試してみる

awsのCloudFront、要するにCDNですね。

今持っているアカウントが無料期間中なので、せっかくだから試してみました。

今回用意したコンテンツ自体がテキスト数行だった為、その速度向上については触れる事ができません。

CloudFrontの設定で少しハマったのでその点について少しだけ。

 

まず、CloudFrontの設定を変えて思った通りに動かない時、DistributionのStatusがDeployedになっているかを確認しましょう。何か設定を変えると10分~20分くらいは更新処理で反映されていない点に注意!

せっかちな私は設定を変えて「Save」ボタンを押したらすぐに反映すると思いこんで、思った通りに動かず、あーでもないこーでもないと無駄に時間を費やしてしまいました…。

きっとあちこちにあるサーバーに情報を同期させる為、時間がかかってしまうのでしょうね。

 

次に設定を変更してもそもそもキャッシュされたままだと反映されないやつもある。取り敢えずDistributionの詳細からInvalidationsタブを選択し、Create Invalidationから任意のObject Pathsを指定してInvalidateしてみましょう。

ちなみにこの処理も結構時間がかかります。StatusがCompletedになるまでしっかりと待ってから次の行動に移すのが吉です。

 

CloudFrontを使う場合はEC2やS3と連動させると思いますが、Distributionの詳細からBehaviorsタブでBehaviorを追加する事で、任意のパターンファイルを任意のEC2やS3から取って来る形に構成する事ができます。

例えば *.jpg は S3 から、*.php は EC2 から、といった感じです。ちなみにphpはキャッシュして欲しく無いのでBehaviorの設定でObjectCachingをCustomizeにし、Minimum TTLを0としたのですが、保存しても設定が反映されません。気付かずに何度か無駄に更新してしまいました。

CloudFrontのキャッシュ時間(TTL)はどの程度なのか | Developers.IO

上記のリンクにあるページから、headerでCache-Controlを使うのが順当なやり方だと知り、php

 <?php header("Cache-Control: no-cache"); ?>

を付ける形でキャッシュさせないようにできました。

 

とりあえずここまで

 

著者:t.n