Amazon CloudFront ディストリビューションとオリジンがオブジェクトにキャッシュするように設定しましたが、ディストリビューションからは「X-Cache:Miss from CloudFront」レスポンスが返されます。なぜこのようなことが起こるのですか。 このレスポンスを防ぐためには、どうすればよいですか。
解決方法
「X-Cache:Miss from CloudFront」レスポンスを診断してトラブルシューティングするには、次の点を確認してください。
リクエストを受信しているのは、どのエッジロケーションですか。
CloudFront を介してオブジェクトがリクエストされた後は、そのオブジェクトはリクエストを受信したエッジロケーションにのみキャッシュされます。後続のリクエストが別のエッジロケーションに対して行われた場合、もう一方のエッジロケーションにはキャッシュされたオブジェクトバージョンはありません。このシナリオでは、「X-Cache:Miss from CloudFront」レスポンスが返されます。
レスポンスが 1 つのエッジロケーションから来ているのか、複数のエッジロケーションから来ているのかを判断するには、同じクライアントから同じオブジェクトに複数のリクエストを送信します。次に、接続が確立されている IP アドレスを確認します。IP アドレスに対して逆引き DNS ルックアップを実行して、リクエストがどのエッジロケーションに向かうのかを特定します。
CloudFront ディストリビューションにリクエストを送信した後に「x-amz-cf-pop」レスポンスヘッダーの値を確認することで、エッジロケーションを特定することもできます。
オブジェクトのリクエスト頻度はどのくらいですか。
エッジロケーションのオブジェクトが頻繁にリクエストされないと、CloudFront はその有効期限が切れる前にオブジェクトを削除する可能性があります。CloudFront がオブジェクトを削除するタイミングの詳細については、「コンテンツがキャッシュに保持される期間の管理 (有効期限切れ)」を参照してください。
「X-Cache:Miss from CloudFront」というレスポンスが断続的に表示される場合は、リクエストの頻度が低いためにオブジェクトが CloudFront に削除されている可能性があります。
CloudFront ディストリビューションは、ヘッダー、cookie、またはクエリ文字列のパラメータを転送するように設定されていますか。
ディストリビューションがヘッダー、クッキー、またはクエリ文字列のパラメータを転送するように設定されている場合、ディストリビューションはそれらのパラメータに基づいてリクエストをキャッシュします。パラメータは、キャッシュから送信されるリクエストの数を減らします。
例えば、オブジェクトにアクセスする 2 つのリクエストがクエリ文字列のパラメータで異なる値を持つ場合、2 番目のリクエストはキャッシュから送信されません。2 番目のリクエストは「X-Cache:Miss from CloudFront」レスポンスを返します。
転送されるヘッダー、クッキー、またはクエリ文字列のパラメータがレスポンスを引き起こしているかどうかを判断するには、これらのパラメータをオリジンに転送しないように CloudFront ディストリビューションを設定してください。その後に、問題が解決しないかどうか確認して下さい。
ディストリビューションがそれらのパラメータを転送しなくなった後で問題が解決した場合は、少なくとも 1 つのパラメータがレスポンスを引き起こしています。幅広いパラメータを転送するように CloudFront を設定するのではなく、CloudFront から転送させたい特定のパラメータのみを許可リストに追加します。
レスポンスがブラウザのキャッシュに保存されていますか。
リクエストが「X-Cache:Miss from CloudFront」レスポンスを返した後は、ブラウザは、ブラウザのキャッシュに保存されるため、その後のリクエストに対して同じレスポンスを送信している可能性があります。
レスポンスがブラウザのキャッシュに保存されているかどうかを確認するには、ブラウザのキャッシュを消去してから同じオブジェクトに対して新しいリクエストを行います。
注意: ブラウザがオブジェクトをキャッシュする期間を特定するには、オブジェクトに Cache-Control ヘッダーまたは Expires ヘッダーが設定されているかどうかを確認してください。