2012-12-21 19 views
25

Quanto tempo è necessario per la propagazione di un file in Google Cloud Storage?Propagazione di Google Cloud Storage

Sto riscontrando questo problema molto frustrante in cui cambio il contenuto di un file e lo ricarico via gsutil, ma la modifica non viene visualizzata per diverse ore. C'è un modo per forzare un file modificato a propagare tutto immediatamente?

Se guardo il file nella console di Google Cloud Storage, esso vede il nuovo file, ma poi se prendo l'URL pubblico è una vecchia versione e in alcuni casi, 2 versioni fa.

C'è un'intestazione che non sto impostando?

EDIT:

ho provato gsutil -h "Cache-Control: no-cache" cp -a public-read MyFile e non aiuta, ma forse il vecchio file deve scadere prima che la nuova versione no-cache prende il sopravvento?

ho fatto un -I ricciolo sul file e ottenere questo ritorno:

HTTP/1.1 200 OK 
Server: HTTP Upload Server Built on Dec 12 2012 15:53:08 (1355356388) 
Expires: Fri, 21 Dec 2012 19:58:39 GMT 
Date: Fri, 21 Dec 2012 18:58:39 GMT 
Last-Modified: Fri, 21 Dec 2012 18:53:41 GMT 
ETag: "66d820174d6de17a278b327e4c3e9b4e" 
x-goog-sequence-number: 3 
x-goog-generation: 1356116021512000 
x-goog-metageneration: 1 
Content-Type: application/octet-stream 
Content-Language: en 
Accept-Ranges: bytes 
Content-Length: 160 
Cache-Control: public, max-age=3600, no-transform 
Age: 3449 

che sembra indicare che scadrà nel giro di un'ora, nonostante la no-cache.

risposta

33

Google Cloud Storage offre una consistente coerenza dei dati: una volta completata una scrittura, una lettura da qualsiasi parte del mondo otterrà i dati più recenti.

Tuttavia, se si abilita la memorizzazione nella cache (che per impostazione predefinita è vera per qualsiasi oggetto pubblicamente leggibile), le letture di quell'oggetto possono vedere una versione dell'oggetto vecchia come Cache-Control max-age specificata sull'oggetto. Se, ad esempio, è caricato il file in questo modo:

gsutil cp -a public-read file gs://my_bucket/file 

si può vedere che il max-age è di 1 ora (3600 secondi):

gsutil ls -L gs://my_bucket/file 
gs://my_bucket/file: 
    Creation time: Fri, 21 Dec 2012 19:59:57 GMT 
    Cache-Control: public, max-age=3600, no-transform 
    Content-Length: 1065 
    Content-Type: text/plain 
    ETag:  eb3fb83beedf1efffe5b8e32e8d6a65a 
    ... 

Se si vuole evitare che un pubblicamente leggibile oggetto vada in cache si poteva fare:

gsutil setmeta -h Cache-Control:no-cache gs://my_bucket/file 

in alternativa, è possibile impostare una più breve max-age sull'oggetto:

gsutil setmeta -h 'Cache-Control:public, max-age=600, no-transform' 

Mike Schwartz, team di Google Cloud Storage

+1

Ho aggiornato le mie domande per includere che ho provato no-cache, ma sto ancora vedendo l'età massima = 3600. Il vecchio file deve scadere prima che il nuovo file no-cache prenda il sopravvento? –

+0

OK, sembra che sia necessario attendere la scadenza della versione cache precedente prima che la versione no-cache prenda il sopravvento. Ora che è scaduto, la versione senza cache viene visualizzata correttamente. –

+3

mi piace sarebbe bello avere una funzionalità per invalidare/svuotare la cache come su CDN. – themihai

Problemi correlati