我通过存储C#API(Google.Cloud.Storage.V1)上传到Google云存储桶。这些是客户端页面访问的公共文件。
问题: 文件以“ private,max-age = 0”发送。
问题: 我想在通过api本身上传文件时或之后设置自定义缓存头。是否可以通过C#Google Storage API调用发送缓存头或其他元数据?
我也很好奇:由于我没有设置任何缓存头,为什么Google存储器以max-age = 0来提供这些文件,而不是根本不发送任何缓存头?
答案 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);
如果您没有指定任何内容,恐怕我不知道缓存控制的详细信息。