Назад | Перейти на главную страницу

Общедоступный объект облачного хранилища Google, кэшированный на стороне сервера

У меня есть корзина Google с разрешением на чтение для allUsers, но он не настроен как веб-сайт (и без архивирования). Я испытываю кеширование объекта, даже когда отправляю Запросы с участием no-cache контроль:

gsutil cp test gs://mybucket
# test has default meta Cache-Control: public, max-age=3600
wget -S --no-cache http://storage.googleapis.com/mybucket/test
# OK saved as test
gsutil rm gs://mybucket/test
wget -S --no-cache http://storage.googleapis.com/mybucket/test
# Saved as test.1, why?

Я запустил wget --no-cache после удаления объекта несколько раз. Иногда он возвращал кешированный test файл, иногда правильно HTTP 404. Я выполнил команды с сервера Ubuntu Google Compute Engine с no cache настроен. У меня такие же результаты на нескольких машинах за пределами Google Cloud.

ИМО сервер должен возвращать HTTP 404 всегда. Есть ли ошибка в инфраструктуре Google Cloud?

Примечание: когда я устанавливаю мета объекта Cache-Control:no-cache он работает как положено. Но я думаю, что сервер никогда не должен возвращать кешированный контент для wget --no-cache даже если у него есть мета по умолчанию Cache-Control:no-cache

Ты прав. В настоящее время Google Cloud Storage игнорирует анонимные клиентские запросы на пропуск кеширования.

Вы можете обойти это, явно установив другую политику управления кешем для объекта, запросив конкретное создание объекта или сделав авторизованные запросы.