【问题标题】:Does Windows Azure Blob Storage support serving compressed files similar to Amazon S3?Windows Azure Blob Storage 是否支持提供类似于 Amazon S3 的压缩文件?
【发布时间】:2014-06-09 09:32:46
【问题描述】:

例如,在 Amazon S3 中,有一个约定,如果您将“bundle.js”和“bundle.js.gz”都上传到服务器,并且客户端请求使用“bundle.js”文件Accept-Encoding: gzip' 标头,Amazon S3 将提供此文件的压缩版本('bundle.js.gz' 而不是 'bundle.js')。

Windows Azure 存储是否支持此功能?如果没有,有什么解决方法?

【问题讨论】:

    标签: azure amazon-s3 azure-storage azure-blob-storage


    【解决方案1】:

    Azure 存储允许您在 blob 上定义 Content-Encoding 属性。对于压缩内容,您可以将此属性设置为GZIP,当此内容由浏览器提供时,它会自动解压缩内容并显示未压缩的内容。

    这与 Amazon S3 有点不同,尽管您实际上必须上传 2 个文件。在这里,您将只上传一个文件(在您的示例中为 bundle.js),该文件已压缩并且内容编码设置为 GZIP

    【讨论】:

    • 它会提供未压缩的内容(以防浏览器不支持 gzip 解码)?
    • 如果我理解正确,提供的内容将始终被压缩。如果在内容编码响应标头中找到GZIP,则消费者(在这种情况下为浏览器)有责任对其进行解压缩。所以如果浏览器不支持 GZIP 解码,就会显示未压缩的内容。例如,我刚刚尝试通过 Fiddler 下载一个压缩文件,它显示了压缩数据,但是如果我通过 Firefox 浏览器下载相同的文件,它显示了正确的文件数据。
    • 您确定如果您同时上传bundle.js(未压缩)和bundle.js.gz(压缩),如果您请求bundle.js 并使用Accept-Encoding: gzip,Azure 不会为您提供压缩版本标题?这似乎是一个标准功能。如果 Azure 还不支持它会很遗憾。
    • 就像我在回答中所说的,我只上传了在上传前压缩的 bundle.js。让我再试试看。
    • 所以我尝试了以下方法 - 我上传了 bundle.js(未压缩)和 bundle.js.gz(压缩)并尝试通过 .Net 代码读取 bundle.js 并提供了 Accept-Encoding: gzip 请求标头。我得到了未压缩的内容。然后我尝试获取 bundle.js.gz 并提供了相同的请求标头。我得到了压缩的内容。我认为 Azure 不支持动态解压。
    【解决方案2】:

    自 2015 年 8 月 12 日起,Azure CDN(安装在 blob 存储上)现在支持自动 GZip 压缩。

    压缩方法 - 支持的压缩方法是 gzip/deflate/bzip2,必须在 接受编码请求标头。

    Improve performance by compressing files

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-26
      • 2017-05-04
      • 2022-08-20
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      相关资源
      最近更新 更多