在网络应用程序中,有一个谷歌存储桶,其中页面和布局存储在静态内容中。 有一个带有nodejs应用程序的谷歌计算服务器,它使用布局和dust.js来生成标记以生成标记。 问题: Google云端存储将旧的/已弃用的文件内容返回给谷歌计算实例,但不归结为在GCE之外本地启动的相同代码。本地启动的代码获取新鲜内容。 即使是过程或机器重启也无助于解决这个问题。 此项目使用标准包@ google-cloud / storage来访问存储桶内容。
答案 0 :(得分:0)
我能够用这样的代码自己解决这个问题:
const STORAGE_DOWNLOAD_BASE_URL = "https://storage.googleapis.com";
const bucketName = 'yoursuperbucket
/**
*
* @param {string} bucketName
* @param {string} fileName
* @return {string}
*/
function getUniqueDownloadUrl(bucketName, fileName) {
return [STORAGE_DOWNLOAD_BASE_URL, bucketName, fileName].join('/') + '?no-cache=true&ignore-cache=true&anti-cache=' + (new Date().getTime());
}
return new Promise(function (resolve, reject) {
request({
url: getUniqueDownloadUrl(bucketName, filePath),
method: 'GET',
headers: {
'Cache-Control': 'no-cache'
}
}, function (err, response) {
if (err) {
console.error('Failed load file content: ' + filePath + ' from bucket ' + bucketName + ' - ' + err);
return reject(err);
}
resolve(response.body);
});
});
对于没有公共访问规则的存储桶,这依赖于绑定到GCE实例的服务帐户