Google Cloud Storage API(C#)-缓存标头元数据

时间:2019-08-19 16:11:43

标签: c# google-cloud-storage

我通过存储C#API(Google.Cloud.Storage.V1)上传到Google云存储桶。这些是客户端页面访问的公共文件。

问题: 文件以“ private,max-age = 0”发送。

问题: 我想在通过api本身上传文件时或之后设置自定义缓存头。是否可以通过C#Google Storage API调用发送缓存头或其他元数据?

我也很好奇:由于我没有设置任何缓存头,为什么Google存储器以max-age = 0来提供这些文件,而不是根本不发送任何缓存头?

1 个答案:

答案 0 :(得分:1)

如果您指定UploadObject而不只是存储桶名称和对象名称,则可以在调用Object时设置缓存控制。这是一个示例:

var client = StorageClient.Create();
var obj = new Google.Apis.Storage.v1.Data.Object
{
    Bucket = bucketId,
    Name = objectName,
    CacheControl = "public,max-age=3600"
};
var stream = new MemoryStream(Encoding.UTF8.GetBytes("Hello world"));
client.UploadObject(obj, stream);

事实发生后,您也可以使用PatchObject

var patch = new Google.Apis.Storage.v1.Data.Object
{
    Bucket = bucketId,
    Name = objectName,
    CacheControl = "public,max-age=7200"
};
client.PatchObject(patch);

如果您没有指定任何内容,恐怕我不知道缓存控制的详细信息。