gpt4 book ai didi

javascript - 来自 Google Cloud 存储桶的图像不会立即更新

转载 作者:太空宇宙 更新时间:2023-11-04 03:28:41 26 4
gpt4 key购买 nike

更新 Google Cloud 存储桶中的图片时,即使图片更新成功,该网址也会在一段时间内提供旧版本(几分钟,例如 5 分钟左右)。

我们使用的链接如下所示:

https://storage.googleapis.com/<bucket-name>/path/to/images/1.jpg

更新图像的代码的相关部分是:

var storageFile = bucket.file(imageToUpdatePath);
var storageFileStream = storageFile.createWriteStream({
metadata: {
contentType: req.file.mimetype
}
});

storageFileStream.on('error', function(err) {
...
});

storageFileStream.on('finish', function() {
// cloudFile.makePublic after the upload has finished, because otherwise the file is only accessible to the owner:
storageFile.makePublic(function(err, data) {
//if(err)
//console.log(err);
if (err) {
return res.render("error", {
err: err
});
}
...
});
});
fs.createReadStream(filePath).pipe(storageFileStream);

这看起来像是 Google Cloud 端的缓存问题。怎么解决呢?更新后如何在请求的url获取更新后的图像?

在 Google Cloud 管理中心中,新图片确实正确显示。

最佳答案

默认情况下,公共(public)对象最多缓存 60 分钟 - 请参阅 Cache Control and Consistency 。要解决此问题,您应该在创建/上传对象时将对象的缓存控制属性设置为私有(private)。在上面的代码中,这将进入 metadata block ,如下所示:

var storageFileStream = storageFile.createWriteStream({
metadata: {
contentType: req.file.mimetype,
cacheControl: 'private'
}
});

关于javascript - 来自 Google Cloud 存储桶的图像不会立即更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41145249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com