sfondo
Sto ospitando un sito statico su S3, con CloudFront sopra le righe. Il problema che ho è con i miei file HTML.
Secondo le FAQ di CloudFront :
Amazon CloudFront utilizza queste intestazioni di controllo della cache per determinare con quale frequenza deve controllare l'origine per una versione aggiornata di quel file
Quello che ho fatto finora
Con questo in mente ho impostato i file HTML nel mio bucket S3 per aggiungere le seguenti intestazioni:
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Alla mia prima chiamata al mio samplefile.htm
, vedo le seguenti intestazioni di risposta (ho escluso le intestazioni ovvie (ad es. Content-Type
) Per mantenere il punto:
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Date:Sat, 10 Dec 2011 14:16:51 GMT
ETag:"a5890ace30a3e84d9118196c161aeec2"
Expires:Fri, 01 Jan 1990 00:00:00 GMT
Last-Modified:Sat, 10 Dec 2011 14:16:43 GMT
Server:AmazonS3
X-Cache:Miss from cloudfront
Come puoi vedere, la mia Cache-Control
intestazione è lì. Il problema è che se aggiorno questo file e aggiorno ottengo il contenuto memorizzato nella cache (anziché l'ultimo file) e posso vedere che CloudFront sta offrendo la sua versione memorizzata nella cache osservando le intestazioni di risposta:
X-Cache:Hit from cloudfront
Sintesi / domanda
Tenendo presente quanto sopra, come posso ottenere il recupero automatico dell'ultimo HTML quando utilizzo CloudFront?
Secondo le sue FAQ dovrei essere in grado di farlo con le intestazioni Cache-Control, ma non riesco a farlo funzionare.
Seguendo le risposte di seguito
Alla fine ho deciso di cambiare il mio CNAME www per puntare direttamente al mio bucket S3. Quindi aggiunto un nuovo CNAME chiamato "statico", che punta a CloudFront.
Ciò significa che HTML è diretto da S3, che ha quindi tutti i suoi riferimenti CSS / JS / IMG che puntano a static.mydomain.com