Google Cloud Storage - 公共对象 url 更新超慢

问题描述 投票:0回答:4

我有一个对 allUsers 具有读取权限的存储桶,它工作正常,但公共 url 链接

https://storage.googleapis.com/example_bucket/example.png
需要很长时间才能更新:如果我将存储中的图像更改为具有相同名称的其他图像,存储桶视图将显示正确的图像以及非公开图像网址
https://storage.cloud.google.com/example_bucket/example.png
,但是公开网址显示的是旧图像,并且需要很长时间才能更新。有人可以解释一下这是正常的还是我做错了什么?

google-app-engine google-cloud-storage
4个回答
1
投票

上传对象时可以设置

cache-control

使用

gsutil

  1. 上传中

gsutil -D -h Cache-Control:"Cache-Control:private, max-age=0, no-transform" cp file gs://BUCKET/file

  1. 编辑:
    gsutil set meta

gsutil setmeta -h Cache-Control:"Cache-Control:private, max-age=0, no-transform" gs://BUCKET/file

或通过控制台:

目前无法为存储桶设置默认

cache-control

您可能有兴趣查看此查看/编辑元数据


1
投票

默认情况下,对所有用户具有 READ 权限创建的对象将使用

cache-control: public, max-age=3600
提供服务。有了这个缓存控制,对对象的更新在一小时内无法反映在缓存中。


1
投票

我在为用户提供个人资料图片时遇到了同样的问题。我通过将

?ignoreCache=1
链接到公共网址来修复此问题。


0
投票

在我们的例子中,我们使用谷歌云存储控制台 GUI 进行更新。如果有人做同样的事情,那么您需要遵循的步骤是:

  1. 将图像上传到存储桶并覆盖前一个图像(如果有的话,它将删除公共访问权限)(根据我的观察),然后单击上传的文件,例如下图中
    1.jpg

Cloud Storage Bucket

  1. 您将看到类似下图的内容。单击编辑元数据,这应该在添加公共访问权限之前完成

Object Details

  1. 添加缓存控制标头,如下所示

Object metadata

  1. 现在公开,如果url已经缓存,您可以附加一些

    parameters like http://your.complete.url/1.jpg?abc=1
    只要语法正确,您可以附加任何参数。

  2. 每次更新对象时都需要遵循这些步骤

© www.soinside.com 2019 - 2024. All rights reserved.