Подтвердить что ты не робот

Распространение Google Cloud Storage

Сколько времени требуется для переноса файла в Google Cloud Storage?

У меня возникает эта очень неприятная проблема, когда я изменяю содержимое файла и повторно загружаю его через gsutil, но это изменение не отображается в течение нескольких часов. Есть ли способ заставить измененный файл распространять все сразу?

Если я посмотрю на файл в консоли Google Cloud Storage, он увидит новый файл, но затем, если я нажму на общедоступный URL, это старая версия, а в некоторых случаях - две версии назад.

Есть ли заголовок, который я не настраиваю?

EDIT:

Я пробовал gsutil -h "Cache-Control: no-cache" cp -a public-read MyFile, и это не помогает, но, возможно, старый файл должен истечь до того, как новая версия без кеша перейдет в?

Я сделал завиток -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

Кажется, что он истечет через час, несмотря на отсутствие кеша.

4b9b3361

Ответ 1

Облачное хранилище Google обеспечивает надежную согласованность данных: как только запись завершится, чтение из любой точки мира получит самые последние данные.

Однако, если вы включите кеширование (которое по умолчанию верно для любого общедоступного объекта), чтение этого объекта может увидеть версию объекта как старую, как максимальный возраст Cache-Control, указанный на объекте. Если, например, вы загрузили файл следующим образом:

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

Вы можете видеть, что максимальный возраст составляет 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

В качестве альтернативы вы можете установить более короткий максимальный возраст объекта:

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

Майк Шварц, команда Google Cloud Storage