2009-04-07 13 views
5

Sto mettendo le risorse su S3 con le intestazioni di scadenza, che sono state correttamente trasferite alle distribuzioni di CloudFront. Tuttavia, le richieste successive alla scadenza non comportano che CloudFront richieda un nuovo file dal server di origine.Memorizzazione nella cache di CloudFront - Come assicurarsi che CF si aggiorni dal server di origine S3 dopo la scadenza?

Inoltre, sto riscontrando che i token delle versioni stringa di query non impongono un nuovo asset e non voglio utilizzare il controllo completo delle versioni dei nomi dei file.

Tutto questo può essere dovuto alla mia scarsa conoscenza delle intestazioni di controllo della cache, ma sto iniziando a chiedermi se mi manca qualcosa di critico su come CloudFront dovrebbe funzionare. Le risposte di CloudFront mostrano intestazioni come le seguenti.

Cache-Control: max-age=120 
Expires: Tue, 07 Apr 2009 12:13:26 GMT 
+0

Sto iniziando a esaminare questo, e la tua scoperta che i token di versione stringa query non impongono un aggiornamento sono un po 'preoccupanti, credo che potrei fare un sacco di riscrittura di URL ma preferirei non farlo. (Lo utilizzerei per generare variazioni di CSS & JS compressi e con versioni da un singolo URL con diverse sequenze di query.) – Myster

risposta

9

Il tempo passa e le cose cambiano. Come aveva notato Tim, il tempo di cache più basso era di 24 ore, ma nell'aprile del 2010 Amazon ha annunciato che riconoscerà e seguirà le direttive per il caching fino ad un'ora.

Annuncio qui: http://developer.amazonwebservices.com/connect/ann.jspa?annID=655

+3

E, arriviamo nel 2012, siamo ancora più avanti: [non più tempo minimo di scadenza] (http: //aws.amazon.com/about-aws/whats-new/2012/03/19/amazon-cloudfront-lowers-minimum-expiration-period/) :) :) – Matchu

0

Come notato nei commenti di Matchu, è ora possibile impostare l'ora di scadenza tutta la strada fino a zero se si desidera, che è davvero bello per il dev e server di test!

http://aws.amazon.com/about-aws/whats-new/2012/03/19/amazon-cloudfront-lowers-minimum-expiration-period/

Il valore minimo TTL può essere più breve 0 secondi. È quindi possibile impostare il TTL per ciascun file impostando l'intestazione del controllo cache sul file nell'origine.

noti inoltre what the Amazon docs say:

Dopo la data di scadenza e l'ora nel Expires passa, CloudFront ottiene di nuovo l'oggetto dal server di origine ogni volta che una posizione bordo riceve una richiesta per l'oggetto.

Si consiglia di utilizzare la direttiva massima di Cache-Control anziché il campo dell'intestazione Expires per controllare la memorizzazione nella cache degli oggetti. Se si specificano valori sia per Cache-Control max-age che per Expires, CloudFront utilizza solo il valore di max-age.