Azure Blob 存储默认压缩文件?

Azure Blob Storage Compressing files by default?

我正在使用 Azure Blob 存储 API 的功能将 JSON 上传到 Azure Blob 存储:

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

代码中绝对没有压缩逻辑,也没有添加任何编码 headers,但文件到达存储时似乎只有原始大小的 60% 左右。此外,使用 fiddler 监控 PUT 请求似乎文件被压缩,然后由 API 上传。

我的问题是,Azure 是否默认进行压缩?

编辑: 我在进行字符串化,然后上传 json objects。他们得到了所有 white-spaces 删除,因此减小了大小。

根据我的测试,没有压缩问题。这是我的样本:

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.9KB。

并且从传送门来看,上传的文件大小为99.96KB,符合我们的预期。

上传时还应使用字节长度,因为存储 blob api 需要字节数,字符串长度可以不同

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

输出:

length: 9
byteLength: 15