2012-01-20 16 views
5

Mam a Rails app, który używa Cloudfront jako swojego CDN i kół zębatych do kompresowania zasobów i ustawiania długich nagłówków Cache-Control.konfiguracja Cloudfront, aby nigdy nie pobierać zasobów

Pierwsza prośba do aktywów daje mi nagłówki odpowiedzi tak:

 
Cache-Control:public, max-age=31536000 
Connection:close 
Content-Encoding:gzip 
Content-Type:application/javascript 
Etag:"892a3afb514e3c84646835f9ef101026" 
Last-Modified:Tue, 17 Jan 2012 16:05:17 GMT 
Server:thin 1.2.11 codename Bat-Shit Crazy 
Vary:Accept-Encoding 
Via:1.0 c662f4e5a3bc7b224ce1bbecb0a23d82.cloudfront.net:11180 (CloudFront), 1.0 fc4797024fafe16fcc03e892c23f078d.cloudfront.net:11180 (CloudFront) 
X-Amz-Cf-Id:bd2a89fb81bba2513f30d6940347693ef483defb4783da06d81b002af23545c39b9176b2c7cb144f,VF69FYlYU8ezzHQp7QkU2GvEQ8NmDqEwRX-wu7H63yNqE1ZlTaAq3g== 
X-Cache:Miss from cloudfront 
X-Runtime:0.012413 
X-Ua-Compatible:IE=Edge,chrome=1 

Perfect. Brakowało pamięci podręcznej z Cloudfront, pobrałem ją z mojej aplikacji, więc teraz powinien ją załadować.

... gdybym teraz odświeżyć stronę otrzymuję te nagłówki odpowiedzi:

 
Connection:keep-alive 
Server:thin 1.2.11 codename Bat-Shit Crazy 
Via:1.0 86123d99569c9296c8605243e9a10621.cloudfront.net:11180 (CloudFront), 1.0 de9fc23d505dae3d19973a98bfa1eba0.cloudfront.net:11180 (CloudFront) 
X-Amz-Cf-Id:a7bf6ffb30c43d306835190d210aeb8ec794c1ff619ad7aaecbad220c1822fe165bda624ae8382e1,bcij_88KOAvLPSqEKDRSvOBjEj7atiKBCAjSbqc2cfdb-BHOTi--LA== 
X-Cache:RefreshHit from cloudfront 
X-Runtime:0.006909 
X-Ua-Compatible:IE=Edge,chrome=1 

Wygląda na to hit CloudFront. Dostaję 304 not modified. Wydaje się więc, że nie pobieram pliku ponownie. JEDNAK, widzę, że to żądanie jest również wysyłane do mojego serwera źródłowego.

Dlaczego tak się dzieje? Czy Cloudfront nie powinien zawsze buforować moich zasobów? Zajmuję się wersjonowaniem moich zasobów, więc naprawdę NIGDY nie chcę, aby to było pobierane z serwera, z wyjątkiem pierwszego żądania. Czy jest jakiś sposób, aby zmusić tego rodzaju zachowanie?

Odpowiedz

Powiązane problemy