我有一个带有公共图像的存储桶经常更新,并且想要禁用3600的默认缓存持续时间。(例如" Cache-Control:private,max-age = 0,no-transform" )
使用PHP上传文件时,是否可以在文件上设置Cache-Control?
有没有办法为存储桶中的所有未来文件设置默认的Cache-Control(比如所有文件都是公共的ACL)?
现在我只能用gsutil设置Cache-Control,而且只能用于当前存储的文件。
答案 0 :(得分:3)
您可以在上传对象时设置Cache-Control - 我建议您使用gsutil -D查看它生成的请求示例,然后将其转换为PHP:
gsutil -D -h Cache-Control:"Cache-Control:private, max-age=0, no-transform" \
cp file gs://your-bucket/file
无法为存储桶设置默认的Cache-Control。
答案 1 :(得分:2)
这是我在找到您的问题后创建的示例。在下面,我希望我上传的文件不被缓存:
$this->bucket->upload(
$content,
[
'name' => $name,
'metadata' => [
'cacheControl' => "public, max-age=0"
]
]
);
我通过以下方式解决了这个问题:
upload
引用:https://googleapis.github.io/google-cloud-php/#/docs/google-cloud/v0.122.0/storage/bucket?method=upload以上都是有用的资源,但希望我的回答对未来的“Google 员工”更加简洁。
答案 2 :(得分:0)
Max:你指的是什么错字?当我运行命令时,它工作,我在调试输出中看到指定的Cache-Control:
%gsutil -D -h Cache-Control:“Cache-Control:private,max-age = 0,no-transform”cp file gs:// my-bucket / file
...
INFO 0823 10:31:19.517297 base_api.py]将http POST发送到https://www.googleapis.com/upload/storage/v1/b/my-bucket/o?fields=generation%2Ccrc32c%2Cmd5Hash%2Csize&alt=json&prettyPrint=True&uploadType=multipart INFO 0823 10:31:19.517704 base_api.py]标题:{'accept':'application / json', 'accept-encoding':'gzip,deflate', 'content-length':'444', 'content-type':“multipart / related; boundary ='=============== 6935917235018049421 =='”, 'user-agent':'apitools gsutil / 4.5(darwin)'} INFO 0823 10:31:19.517773 base_api.py]正文: - =============== 6935917235018049421 == Content-Type:application / json MIME版本:1.0
{“cacheControl”:“Cache-Control:private,max-age = 0,no-transform”,“bucket”:“my-bucket”,“contentType”:“text / x-c ++”,“name “:”file“,”contentLanguage“:”en“} - =============== 6935917235018049421 == 内容类型:text / x-c ++ MIME版本:1.0 内容传输编码:二进制
...