Отключить кеширование в Google Cloud Storage - PullRequest
0 голосов
/ 14 июля 2020

Я использую GCS для хранения своих изображений, а также использую пакет NodeJS для загрузки этих изображений в свою корзину. Я заметил, что если я часто меняю изображение, оно выполняет одно из следующих действий:

  • Изменяется
  • Показывает старое изображение
  • Не работает ' t change

Кажется, это происходит довольно случайно, несмотря на правильную настройку всех параметров и даже перекрестную ссылку на них с помощью GCS.

Я загружаю свои изображения следующим образом:

const options = {
    destination,
    public: true,
    resumable: false,
    metadata: {
      cacheControl: 'no-cache, max-age=0',
    },
  };

  const file = await this.bucket.upload(tempImageLocation, options);
  const { bucket, name, generation } = file[0].metadata;

  const imageUrl = `https://storage.googleapis.com/${bucket}/${name}`;

Я спорил, использовать ли базовый URL-адрес, который вы видите там, или использовать этот: https://storage.cloud.google.com.

Кажется, я не могу понять, что делаю неправильно и как всегда обслуживать fre sh изображение. Я также пробовал? IgnoreCache = 1 и другие параметры запроса.

1 Ответ

0 голосов
/ 14 июля 2020

Согласно официальной документации API - доступной здесь - показано, что вам не нужен await. Это может когда-нибудь повлиять на вашу загрузку. Если вы хотите использовать await, вам нужно, чтобы ваша функция была async в объявлении, как показано во втором примере из документации. Ваш код должен выглядеть так.

  const bucketName = 'Name of a bucket, e.g. my-bucket';
  const filename = 'Local file to upload, e.g. ./local/path/to/file.txt';

  const {Storage} = require('@google-cloud/storage');
  const storage = new Storage();

  async function uploadFile() {
    // Uploads a local file to the bucket
    await storage.bucket(bucketName).upload(filename, {
      // Support for HTTP requests made with `Accept-Encoding: gzip`
      gzip: true,
      // By setting the option `destination`, you can change the name of the
      // object you are uploading to a bucket.
      metadata: {
        // Enable long-lived HTTP caching headers
        // Use only if the contents of the file will never change
        // (If the contents will change, use cacheControl: 'no-cache')
        cacheControl: 'public, max-age=31536000',
      },
    });

    console.log(`${filename} uploaded to ${bucketName}.`);
  }

  uploadFile().catch(console.error);

Хотя это не проверено , это должно помочь вам избежать проблемы с загрузкой изображений не всегда.

Кроме того, как объясняется в официальной документации Editing Metada , вы можете изменить способ использования и управления метаданными, включая элемент управления кешем, в вашем проекте. Таким образом, вы также можете изменить конфигурацию кеша.

Я также хотел бы включить приведенную ниже ссылку для полного руководства о том, как отправлять изображения в облачное хранилище с помощью Node.js, если вы хотите попробуйте другой подход.

Сообщите мне, помогла ли вам эта информация!

...