Ho a Rails app che utilizza Cloudfront come CDN e pignoni per comprimere le risorse e impostare lunghe intestazioni Cache-Control
.installazione Cloudfront per non recuperare mai le risorse
Prima richiesta di un asset mi dà intestazioni di risposta in questo modo:
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
Perfetto. Ha perso la cache da Cloudfront, lo ha scaricato dalla mia app, quindi dovrebbe caricarlo da lì ora d'ora in poi.
Ora ... se mi aggiorna la pagina ottengo queste intestazioni di risposta:
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
sembra che ha colpito Cloudfront. Ottengo un 304 not modified
. Quindi sembrerebbe che non sto scaricando di nuovo il file TUTTAVIA, vedo che questa richiesta viene fatta anche al mio server di origine.
Perché succede? Cloudfront non dovrebbe sempre mettere in cache le mie risorse ora? Sto facendo il versioning delle mie risorse, quindi NON voglio davvero che questo venga scaricato dal server save per la prima richiesta. C'è un modo in cui posso forzare questo tipo di comportamento?