2016-12-14 3 views
0

Google Cloudバケットで画像を更新すると、画像の更新に成功した場合でも、しばらくの間(古いブラウザの場合は5分程度)古いバージョンが表示されます。Google Cloudバケットの画像はすぐに更新されません

私たちがどのように見えるを使用しているリンク:

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クラウド側でのキャッシングの問題のように見えます。どのようにそれを解決するには?どのように更新された後、要求されたURLで更新されたイメージを取得するには?

Google Cloud管理者の新しい画像は、が正しく表示されます。

答えて

3

デフォルトでは、公開オブジェクトは最大60分間キャッシュされます。Cache Control and Consistencyを参照してください。これを修正するには、オブジェクトの作成/アップロード時にオブジェクトのcache-controlプロパティをprivateに設定する必要があります。上のコードでは、これはmetadataブロックになります。

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

それは確かに修正されました。どうもありがとうございます。 ':-)' –

関連する問題