30

Google Cloud Storage内のファイルへの変更が反映されるまでにどのくらい時間がかかりますか?

ファイルの内容を変更してgsutilを介して再アップロードするという非常に苛立たしい問題が発生していますが、変更が数時間表示されません。変更されたファイルにすべてをすぐに伝播させる方法はありますか?

Google Cloud Storageコンソールでファイルを見ると、新しいファイルが表示されますが、パブリックURLにアクセスすると、古いバージョンであり、場合によっては2バージョン前です。

設定していないヘッダーはありますか?

編集:

試しgsutil -h "Cache-Control: no-cache" cp -a public-read MyFileましたが、役に立ちませんが、新しいキャッシュなしバージョンが引き継ぐ前に、古いファイルの有効期限が切れている可能性がありますか?

私はファイルに対してcurl-Iを実行し、これを取り戻しました:

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

これは、キャッシュがないにもかかわらず、1時間で期限切れになることを示しているようです。

4

1 に答える 1

40

Google Cloud Storage は強力なデータ整合性を提供します。書き込みが完了すると、世界中のどこからでも最新のデータを取得できます。

ただし、キャッシングを有効にすると (既定では、公的に読み取り可能なすべてのオブジェクトに当てはまります)、そのオブジェクトを読み取ると、オブジェクトに指定された Cache-Control max-age と同じくらい古いオブジェクトのバージョンが表示されます。たとえば、次のようにファイルをアップロードしたとします。

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

max-age が 1 時間 (3600 秒) であることがわかります。

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
    ...

一般に読み取り可能なオブジェクトがキャッシュされないようにしたい場合は、次のようにします。

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

または、オブジェクトの max-age を短く設定することもできます。

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

Mike Schwartz、Google Cloud Storage チーム

于 2012-12-21T20:06:26.733 に答える