2

我想要使用Cloudfront中的新功能,該功能允許使用Accept-Encoding:gzip標頭正在使用gzip文件。我設置了我的CDN發行版,打開了「自動壓縮對象」,白名單標題:Origin,Accept-Control-Request-Headers和Accept-Control-Request-Method(我使用的是AngularJS,我需要它用於OPTIONS方法)。我沒有在我的S3存儲桶上設置任何CORS。Amazon S3和Cloudfront不需要gzip

正如他們的文檔中所述,當我向請求添加Accept-Encoding:gzip標頭時,它應該開始工作。但是,我仍然得到原始文件。

Response Headers 

Accept-Ranges:bytes 
Age:65505 
Cache-Control:public, max-age=31557600 
Connection:keep-alive 
Content-Length:408016 
Content-Type:text/css 
Date:Mon, 21 Mar 2016 16:00:36 GMT 
ETag:"5a04faf838d5165f24ebcba54eb5fbac" 
Expires:Tue, 21 Mar 2017 21:59:21 GMT 
Last-Modified:Mon, 21 Mar 2016 15:59:22 GMT 
Server:AmazonS3 
Via:1.1 0e6067b46ed4b3e688f898d03e5c1c67.cloudfront.net (CloudFront) 
X-Amz-Cf-Id:gKYTTq0cIcUvHTtlrdMig8D1R2ZVdea4EnflV0-IxhtaxgRvLYj6LQ== 
X-Cache:Hit from cloudfront 

Request Headers 

Accept:text/css,*/*;q=0.1 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:pl,en-US;q=0.8,en;q=0.6 
Cache-Control:max-age=0 
Connection:keep-alive 
Host: XXX.cloudfront.net 
Referer: XXX 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 

我的配置是:

  • 滑軌與角上獨角獸(使用asset_sync)
  • Nginx的
  • S3和的Cloudfront

回答

3

通知這兩個響應頭。

Age: 65505 
X-Cache: Hit from cloudfront 

此對象在事先請求之前緩存了65,505秒(≅18小時),然後再請求這個特定時間。

一旦CloudFront在特定邊緣緩存對象,如果稍後配置相關緩存行爲以啓用即時壓縮,CloudFront將不會返回並重新壓縮其緩存中已有的對象。它將繼續服務對象的原始版本,直到它被驅逐。

如果這個18小時的時間間隔比您在分佈上啓用壓縮的時間要早​​,那麼這是您所看到的最可能的解釋。

CloudFront在從原點獲取文件時會壓縮每個邊緣位置的文件。配置CloudFront以壓縮內容時,它不會壓縮已位於邊緣位置的文件。此外,當文件在邊緣位置過期並且CloudFront將文件的另一個請求轉發到您的原點時,如果您的原點返回HTTP狀態代碼304,則CloudFront不會壓縮文件,這意味着邊緣位置已經具有最新的該文件的版本。如果您希望CloudFront壓縮已位於邊緣位置的文件,則需要使這些文件無效。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html

通過提交invalidation request的路徑*(面面俱到),或在幾分鐘之內就這特定/path/path*等集中退出一切從你的發行版的緩存,所有緩存內容的如果你沒有指定*的所有內容(如果你沒有指定*的所有內容)將被驅逐(等待失效表明它已完成),並且應該看到後續請求的壓縮工作。

請關注Age:(CloudFront擁有特定響應的副本多長時間),一旦它下降然後重置,我會冒險猜測您會看到您的期望。

如果這樣做不能解決問題,還有另一種可能,但是我希望這是一個相當不尋常的事情:

在極少數情況下,當一個CloudFront的邊緣位置異常忙碌,某些文件可能不會被壓縮。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html

+0

完蛋了。重新上傳使它壓縮。謝謝! –