2017-02-20 59 views
0

我現在正在使用cloudfront + 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

這很可能是因爲在的Cloudfront請求或其他類似標題的User-agent信息Cookie緩存,Content-Type

  1. 檢查,如果你轉發Cookie數據的原產地在您的分佈設定。如果你這樣做,Cloudfront會爲每個新會話緩存不同的版本(如果你有一個rails會話cookie)。
  2. 檢查您的設置,瞭解Cloudfront如何處理請求中的標頭。例如。默認情況下,Cloudfront會將標頭Content-type傳遞給原始服務器。在頭和默認行爲的完整列表,在這裏http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html#request-custom-headers-behavior

位於看到你發出請求標題:

檢查開發者工具的網絡標籤。在那裏您可以看到請求標題。

捲曲

-v選項添加到請求

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

它將輸出類似

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

那麼你可以嘗試在你的捲曲添加/刪除不同的頁眉 - 請求模仿瀏覽器發出的請求。例如。將相同的cookie數據:

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

最有可能的罪魁禍首您的方案是Content-type頭中不存在默認情況下捲曲的請求。