2017-02-20 9 views
0

現在クラウドフロント+ S3を使用していますが、画像は期待どおりに配信されていますが、クラウドフロントのキャッシュヒット/ミスはバグです。rails cloudfront cache expiration

再現手順

  1. 訪問ウェブページ(ネットワーク]タブを示しx-cache:Hit from cloudfront
  2. カール-I $同じURL(X-Cache: Miss from cloudfront
  3. カール-I $同じURL(X-Cache: Hit from cloudfront

最初にcurlにクラウドフロントヒットを表示すると予想されます。これは、ブラウザが以前にクラウドフロントヒットを示したためです。

答えて

0

ほとんどの場合、これはリクエストまたはUser-agentのような他のヘッダによってCookie情報のためCloudFrontはキャッシュされ、Content-Typeなど

  1. チェックあなたの配信設定であなたの元にCookieデータを転送する場合。これを行うと、新しいセッションごとに異なるバージョンがキャッシュされます(レールセッションクッキーがある場合)。
  2. Cloudfrontが要求のヘッダーを処理する方法に関する設定を確認してください。例えば。デフォルトでCloudwardは、ヘッダContent-typeをオリジンサーバに渡します。あなたが作るリクエストのヘッダーを見るにはこちらをhttp://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html#request-custom-headers-behavior

に位置しているヘッダと、デフォルトの動作上の完全なリスト:

クローム

開発ツールでネットワーク]タブを確認してください。ここでリクエストヘッダを見ることができます。

カール

それは

> HEAD/HTTP/1.1 
> User-Agent: curl/7.35.0 
> Host: yoursite.com 
> Accept: */* 

のような出力に何かその後、あなたのカールで異なるヘッダを追加/削除することを試みることができます要求

curl -v -I http://yoursite.com 

-vオプションを追加します。 -requestを使用して、ブラウザからのリクエストを模倣します。例えば。同じクッキー・データを追加:

curl -v -I -H "Cookie: my_cookie=some_value;" http://yoursite.com 

あなたのシナリオの中で最も可能性の高い犯人は、デフォルトではカール・リクエストに存在しないContent-typeヘッダです。

関連する問題