Azure Хранилище BLOB-объектов Сжатие файлов по умолчанию? - PullRequest
0 голосов
/ 30 марта 2020

Я загружаю JSON-файлы в Azure Хранилище больших двоичных объектов с помощью функции Azure API хранилища больших двоичных объектов:

    const response = await blobClient.upload(content, content.length);

В коде нет абсолютно ни логики сжатия c, ни добавляемых заголовков кодирования но файлы, кажется, составляют около 60% от их первоначального размера, когда они достигают хранилища. Кроме того, при мониторинге запросов PUT с использованием fiddler кажется, что файл сжимается, а затем загружается с помощью API.

Мой вопрос: Azure выполняет сжатие по умолчанию?

РЕДАКТИРОВАТЬ: Я выполнял строковое преобразование и затем загружал объекты json. Они удаляют все пробелы и, следовательно, уменьшают размер.

Ответы [ 2 ]

1 голос
/ 31 марта 2020

На основании моего теста проблем со сжатием нет. Вот мой пример:

const { BlobServiceClient } = require("@azure/storage-blob");
var fs = require('fs');

async function main() {
    const AZURE_STORAGE_CONNECTION_STRING = "Your_Stroage_Account_Connection_String";
    const blobServiceClient = BlobServiceClient.fromConnectionString(AZURE_STORAGE_CONNECTION_STRING);

    const containerName = 'demo';
    const blobName = 'test.txt';

    const containerClient = blobServiceClient.getContainerClient(containerName);
    if(!await containerClient.exists()){
        await containerClient.create();
    }
    const contents = fs.readFileSync('test.txt');
    const blockBlobClient = containerClient.getBlockBlobClient(blobName);
    await blockBlobClient.upload(contents,contents.length);

}

main().then(() => console.log('Done')).catch((ex) => console.log(ex.message));

Размер файла test.txt составляет около 99,9 КБ.

enter image description here

И от Портал, размер загружаемого файла составляет 99,96 КБ ,, что соответствует нашим ожиданиям.

enter image description here

0 голосов
/ 01 апреля 2020

Вы также должны использовать длину в байтах при загрузке, так как API хранилища BLOB-данных ожидает количество байтов, длина строки может быть разной

  const content = "Hello 世界!";
  console.log(`length: ${content.length}`);
  console.log(`byteLength: ${Buffer.byteLength(content)}`);

вывод:

length: 9
byteLength: 15
...