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
我正在使用 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