在Google云端存储分区上设置缓存控制

时间:2014-08-20 13:46:27

标签: php google-app-engine caching google-cloud-storage

我有一个带有公共图像的存储桶经常更新,并且想要禁用3600的默认缓存持续时间。(例如" Cache-Control:private,max-age = 0,no-transform" )

使用PHP上传文件时,是否可以在文件上设置Cache-Control?

有没有办法为存储桶中的所有未来文件设置默认的Cache-Control(比如所有文件都是公共的ACL)?

现在我只能用gsutil设置Cache-Control,而且只能用于当前存储的文件。

3 个答案:

答案 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"
    ]
  ]
);

我通过以下方式解决了这个问题:

  1. 转到存储库:https://github.com/googleapis/google-cloud-php-storage
  2. 这导致了官方文档:https://cloud.google.com/storage/docs
  3. 我找到了 PHP 参考:https://googleapis.github.io/google-cloud-php/#/docs/google-cloud/v0.122.0/storage/storageclient
  4. 其中包含存储桶的 upload 引用:https://googleapis.github.io/google-cloud-php/#/docs/google-cloud/v0.122.0/storage/bucket?method=upload
  5. 建议对元数据使用 JSON API 参考 https://cloud.google.com/storage/docs/json_api/v1/objects/insert#request-body
  6. 链接到用于缓存控制的 rfc 规范文档 https://tools.ietf.org/html/rfc7234#section-5.2

以上都是有用的资源,但希望我的回答对未来的“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 内容传输编码:二进制

...