Изображения облачного хранилища google отличаются для аутентифицированного и публичного url

Я не могу понять, как возможно, что для GCS authenticated URL показывает другое изображение, чем public URL ?

Я загружаю изображения через скрипт python django

def upload_to_cloud(blob_name, file_obj):
    file_type = imghdr.what(file_obj)
    blob_name = str(blob_name) + '.' + file_type  # concatenate string to create 'file_name.format'
    stats = storage.Blob(bucket=bucket, name=blob_name).exists(client)  # check if logo with the same reg.nr exists
    if stats is True:  # if exists then delete before uploading new logo
        storage.Blob(bucket=bucket, name=blob_name).delete()
    blob = bucket.blob(blob_name)
    blob.upload_from_file(file_obj=file_obj, content_type=f'image/{file_type}')
    path = blob.public_url
    return path

class CompanyProfile(SuccessMessageMixin, UpdateView):  # TODO why company logo differs from the one in ads_list?
    model = Company
    form_class = CompanyProfileCreationForm

    def form_valid(self, form):
        """
        Check if user uploaded a new logo. If yes
        then upload the new logo to google cloud
        """
        if 'logo' in self.request.FILES:
            blob_name = self.request.user.company.reg_nr  # get company registration number
            file_obj = self.request.FILES['logo']  # store uploaded file in variable
            form.instance.logo_url = upload_to_cloud(blob_name, file_obj)  # update company.logo_url with path to uploaded file
            company = Company.objects.get(pk=self.request.user.company.pk)
            company.save()
            return super().form_valid(form)
        else:
            return super().form_valid(form)

В общем случае один и тот же объект будет обслуживаться storage.googleapis.com и storage.cloud.google.com.

Единственное исключение - если есть какое-то кэширование (либо в браузере, либо в прокси, либо в Cloud CDN, либо в GCS). Если вы читаете объект через storage.cloud.google.com перед загрузкой новой версии, то чтение после через storage.cloud.google.com может обслуживать старую версию, в то время как storage.googleapis.com возвращает новую. Кэширование также может зависеть от местоположения.

Если вы не можете позволить час кэширования, установите Cache control на no-cache.

Вернуться на верх