2017-07-12 3 views
-1

In einer Webanwendung gibt es einen Google Storage Bucket, in dem Seiten und Layouts mit statischem Inhalt gespeichert werden. Es gibt einen Google Compute-Server mit einer Nodejs-App, die Seiten mit Layouts und dust.js zum Erstellen von Markups bereitstellt. Problem: Google Cloud-Speicher gibt alten/veralteten Dateiinhalt an Google Compute-Instanz zurück, aber nicht an denselben Code, der lokal außerhalb von GCE gestartet wurde. Lokal gestarteter Code erhält neuen Inhalt. Selbst ein Prozess- oder Maschinenneustart hilft nicht dabei, dies zu lösen. Das Standardpaket @ google-cloud/storage wird für dieses Projekt verwendet, um auf den Bucket-Inhalt zuzugreifen.google cloud storage dient alten Inhalten zum google rechentinstanzen

+1

Sind Ihre Objekte konfiguriert, dass Caching? Siehe https://cloud.google.com/storage/docs/gsutil/addlhelp/WorkingWithObjectMetadata#cache-control. –

+0

Bitte machen Sie Ihr entwicklungsbezogenes Problem sowohl im Titel als auch im Text klarer (verwenden Sie klare Fragen und stellen Sie Code/Dateien zur Verfügung) Beispiele). – Fabien

Antwort

0

konnte ich dieses Problem selbst mit Code wie folgt lösen:

mit nicht öffentlichen Zugangsregeln
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); 
       }); 
      }); 

Für Eimer diese auf Dienstkonto verlässt sich gebunden Ihre GCE-Instanz

Verwandte Themen