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

元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

ふつうのWebサイトの負荷軽減におけるCloudFront

Wordpressのアクセスが増えたからサーバを増強しないと...」と聞くことがあります。

サーバ増強もよいですが、その前にAmazon CloudFrontを試してみてはいかがでしょうか。 最近のアップデートで一般的なレンタルサーバでも導入しやすくなっています。

条件はおそらく

だけです。(たぶん)

参考

【AWS発表】Amazon CloudFront に Cookieのサポートを含む3つの新機能が追加!

Cookieサポートで、管理画面やコメント投稿者などに対応できるようになっています。

【AWS発表】CloudFrontでカスタムコンテンツの配信が可能に

Hostヘッダ転送が可能になったことで、所謂名前ベースのバーチャルホストにサーバ側の変更や特殊な設定テクニックなしに対応できるようになりました。これがどういうことかというと、独自ドメインが可能な一般的な共用レンタルサーバで利用できる可能性が出てきた、ということです。

また、UserAgent(ブラウザの種類)での出し分けを行っている場合、UserAgentごとのキャッシュも可能になりました。

サンプルサイト

http://wp-cloudfront.takeyu-web.com/

  • Wordpress
    • 各ページ
    • 管理機能
    • コメント機能
    • サイト内検索 など
  • キャッシュ有効期限10分
  • CloudFrontを経由してレンタルサーバ

CloudFrontで何が変わるのか?

Good

  • サーバへのアクセスの多くをCloudFront側のキャッシュで賄うことができるので、サーバの負荷を抑えられる
  • キャッシュからの配信なので動的配信に比べて高速
  • 世界各地のAmazonのサーバ(AWSエッジロケーション)の中からネットワーク距離の近いサーバにキャッシュされるため、海外からのアクセスには海外サーバから配信、といったことが可能。読み込みが高速になり、機会損失を抑えることができます。

Bad

  • サーバ側に記録されるアクセスログApacheaccess_logなど)に残らない
    • Google Analyticsなどを使ったり、CloudFrontが書き出すログを処理したり
  • Expiresヘッダによるキャッシュ期間の設定に注意しないと、不適切な記事の修正が反映されるまでに時間がかかってしまうなどのケースがある

CloudFrontでも変わらないもの

  • 利用中のサーバ(サービスによっては工夫が必要だったりするものもあるかも?今度試す)
  • ページの見え方
  • URL(独自ドメイン利用可能の場合)
  • HTTPSアクセス
  • GoogleAnalytics
  • コメント、管理、検索などの機能(適切にCookieやExpiresヘッダが設定されている場合)

など大抵のこと

CloudFront設定上の注意

Google Analycisなどアクセスの度に変化するCookieを書き出すものを利用する場合にWhitelist設定が必要(アクセス毎に変化してしまうCookieを除外するため)

CloudFrontの価格

動画配信サービスなどでも無い限り、転送量で料金が問題になることはほぼないと思う。

Amazon CloudFront 料金表

設定方法

設定方法等詳しくは遅くなったので後日。

メモ

  • サーバ sv00.hogeserver.com
  • CloudFront
    • Origin Domain Name ... サーバのホスト名(sv00.hogeserver.com)を指定 ※独自ドメインではない
    • Allowed HTTP Methods ... GET, HEAD, PUT, POST, PATCH, DELETE, OPTIONS
    • Forward Headers ... Whitelist Host
    • Object Caching ... Use Origin Cache Headers
    • Forward Cookies ... All / Whitelist
      • GoogleAnalyticsを使用している場合、__utmbが表示の度に変わってしまうのでAllだとキャッシュヒット率が低下するので、WhitelistでWPのログインなど必要なものを選択
    • Forward Query Strings ... Yes
    • Alternative Domain Names ... CNAMEに設定した独自ドメインhoge.yourdomain.com)
  • 独自ドメイン DNSレコード
    • hoge.yourdomain.com ... CloudFrontのドメイン名(xxxxxxxxxxxxx.cloudfront.net)のCNAMEにする ※CloudFront Distribution作成後に確認可能