AWSで構成しているWordPressにCloudFrontを使用してキャッシュをバリバリ効かせて高速にしよう!と検討した時の話です
こちらのプラグインAWS for WordPressを使おうかなと考えました。
結論からいうと、本サイト hacknote.jp のようなブログサイトや、更新頻度の高いWordPressには向いていないという結論になりました。
そもそもCloudFrontとは?
CloudFrontはAWSのサービスのキャッシュサーバーです。世界各地にあるので、どこからアクセスしても高速にコンテンツを届ける事ができます。
イメージとしてはこんな感じです
まず最初にアクセスするときはキャッシュを保持していないので、CloudFrontがEC2(WordPressサーバー)にコンテンツを取りに行きます。
これを利用して、EC2に直アクセスをさせないという意味で、セキュリティを高める設定も出来ます。
2回目以降にアクセスするときはCloudFrontがキャッシュを保持しているので、ユーザーに高速にコンテンツを届ける事ができます。
AWS For WordPressとは
AWS For WordPressとはWordPressのプラグインで、簡単にCloudFrontや、その他のPollyなどのAWSサービスを使うことが出来るものです。
CloudFrontを自分で設定するのは慣れていないとなかなか難しいのですが、このプラグインを利用すれば簡単に設定することが出来ます。
WordPressは動的なページ(ログインやコメント、投稿など)なので、それらの処理はキャッシュをさせてはいけません。
そのため、自分でCloudFrontを設定するときはそれらを考慮して設定する必要があります。
例えば、/wp-admin/
のディレクトリです。管理者がログインして、記事の投稿やテーマの変更等を行うからです。
なぜブログ向きではないのか
ではなぜブログ向きではないのかというと、投稿した記事がキャッシュサーバーに自動で反映されないからです
投稿した記事は本来であれば、投稿した瞬間に世界中に公開されますが、CloudFrontを利用していると、それからアクセスしてくるユーザーには新記事が表示されません。 URLに直アクセスしたときは見れますが、新着の欄には出てきません。
まだCloudFrontが新しい記事をキャッシュしていないからです。
この問題を解決するにはCloudFrontのコンソールに行ってキャッシュクリアをする必要があります。(aws cli等でも出来るかもしれませんが検証していません)
更新が多いサイトなどではこれをいちいちやるのは面倒です。
それに一回クリアされてしまうので、CloudFrontを導入するメリットが薄くなってしまいます。
どのようなサイトに向いているのか
ではどのようなサイトに向いているのかというと、更新頻度が高くないサイトに向いていると言えます。
コーポレートサイトなどで使えば、高速にコンテンツを配信することが出来るます。
キャッシュクリアするのはどのタイミング?
では自分でキャッシュクリアしなかった場合どのくらいの時間でクリアされるのかというと、デフォルトでは24時間です。
コンテンツがエッジキャッシュに保持される期間の管理 (有効期限)
こちらにも書いてありますが、時間を長くすればするほどユーザーには高速にコンテンツが配信されるのでメリットがあります。
ただ長くすればよいかというわけではなく、丁度いい時間を探さないといけないですね。