Amazon CloudFrontは、AWSが提供するCDN(コンテンツ配信ネットワーク)サービスです。世界中のエッジロケーションを活用して、ウェブサイトやアプリケーションのコンテンツを高速に配信します。
HTTPヘッダーは、ウェブブラウザとサーバー間で交換される追加情報です。これらはリクエストやレスポンスの詳細を提供し、どのようにデータを処理すべきかを指示します。
レスポンスヘッダーの例:
CloudFrontでは、オリジンに送信するリクエストや、ビューワーに送信するレスポンスにカスタムHTTPヘッダーを追加できます。
CloudFrontは自動的に以下のようなヘッダーも追加します:
X-Edge-Location
: リクエストを処理したエッジロケーション
X-Cache
: キャッシュヒット/ミス情報
X-Amz-Cf-Id
: リクエスト識別子
Cache-Controlは、コンテンツのキャッシュ方法を指定するHTTPレスポンスヘッダーです。このヘッダーを使って、CloudFrontやブラウザがどのようにコンテンツをキャッシュするかをコントロールできます。
| ディレクティブ | 説明 | 例 |
|---|---|---|
max-age
|
コンテンツがキャッシュ可能な最大秒数 |
Cache-Control: max-age=3600
(1時間キャッシュ) |
s-maxage
|
共有キャッシュ(CloudFrontなど)に対する最大秒数 |
Cache-Control: s-maxage=86400
(CDNで1日キャッシュ) |
no-cache
|
再検証なしでキャッシュを使用しない |
Cache-Control: no-cache
|
no-store
|
一切キャッシュしない |
Cache-Control: no-store
|
public
|
任意のキャッシュで保存可能 |
Cache-Control: public, max-age=86400
|
private
|
ブラウザのみでキャッシュ可能、CDNでは不可 |
Cache-Control: private, max-age=3600
|
private
ディレクティブを使用すると、CloudFrontはそのコンテンツをキャッシュしません。これはユーザー固有のコンテンツに適しています。
CloudFrontでは、オリジンから送られるCache-Controlヘッダーに基づいてキャッシュを管理しますが、CloudFrontの設定でこれをオーバーライドすることも可能です。
画像、CSS、JavaScriptなどの静的コンテンツは長時間キャッシュするのが効果的です。
これにより、コンテンツは1年間キャッシュされます。更新時には、ファイル名にバージョンやハッシュを含めることで、新しいバージョンを確実に取得できます。
頻繁に更新される動的コンテンツは、短時間のキャッシュか再検証を設定します。
この設定では、CloudFrontは毎回オリジンに再検証を行います。または、短時間キャッシュする場合:
ユーザー固有の情報を含むページは、CDNでキャッシュしないようにします。
これにより、CloudFrontはこのコンテンツをキャッシュせず、各リクエストをオリジンに転送します。
CloudFrontのディストリビューション設定で、オリジンのCache-Controlヘッダーを上書きできます。
カスタムヘッダーとCache-Controlを組み合わせることで、より柔軟なコンテンツ配信が可能になります。
Vary
ヘッダーを使用すると、同じURLでも国別に異なるキャッシュバージョンを保持できます。
この設定により、モバイルとデスクトップで最適化された異なるバージョンをキャッシュできます。
Vary
ヘッダーを過剰に使用すると、キャッシュヒット率が低下する可能性があります。重要な差異のみに使用しましょう。
private
ディレクティブを使用
適切なHTTPヘッダーとCache-Control設定により、ウェブサイトのパフォーマンス、セキュリティ、ユーザー体験を大幅に向上させることができます。コンテンツの特性に合わせて最適な設定を選択しましょう。
Created by SSuzuki1063
AWS SAP Learning Resources