Предположим, что я скопировал один объект в корзину Google Cloud Storage, используя следующую команду:
gsutil -h "Cache-Control:public,max-age=3600" cp -a public-read a.html gs://some-bucket/
Теперь я хочу скопировать этот файл «в облако», сохранив общедоступный ACL и одновременно обновив заголовок Cache-Control:
gsutil -h "Cache-Control:no-store" cp -p gs://some-bucket/a.html gs://some-bucket/b.html
Является ли эта операция атомарной? т.е. могу ли я быть уверен, что объект gs://some-bucket/b.html
станет изначально доступен с измененным заголовком Cache-Control:no-store
?
Причина моего вопроса: я использую корзину Google Cloud Storage в качестве серверной части CDN. Хотя я хочу, чтобы CDN кэшировала большинство объектов в корзине в соответствии с max-age
, представленным в заголовке Cache-Control
, я хочу убедиться, что несколько определенных файлов, которые на самом деле являются копиями кэшируемых версий, никогда не будут кэшируется CDN. Поэтому очень важно, чтобы эти объекты при копировании никогда не отображались с заголовком Cache-Control:public,max-age=XXX
, а сразу появлялись с заголовком Cache-Control:no-store
, чтобы исключить вероятность того, что запрос, исходящий из CDN, будет читать скопированный объект в момент времени, когда max-age
будет все еще присутствует и, следовательно, кэширует объект, который, как предполагается, никогда не кэшируется.