【问题标题】:How to turn off HTTP compression for downloaded zip files?如何关闭下载的 zip 文件的 HTTP 压缩?
【发布时间】:2011-02-21 05:35:42
【问题描述】:

我有一个启用了 HTTP 压缩的 ASP.NET Web 应用程序(通过 IIS 设置)。该应用程序的功能之一是创建多个文本文件并将它们打包为单个 zip 文件以供用户下载。

启用 HTTP 压缩后,应用程序创建的文件会被压缩两次 - 一次由 Web 应用程序压缩,另一次由 HTTP 压缩;结果,当用户下载 zip 文件时,它有 1 个文件是应用程序生成的 zip 文件,而第二个 zip 文件具有原始内容。

我的要求是仅对 zip 文件禁用 HTTP 压缩。我如何实现这一目标?用于压缩的元数据库文件中不包含文件扩展名“zip”。

【问题讨论】:

  • 你确定你见过这种行为吗? HTTP 压缩通常是zlibnot Zip。而且我无法想象有足够多的人想要一个自动 Zip 文件创建,MS 会在他们的服务器中实现它。但是 zlib 压缩对于带宽较低的客户端非常有用,因此几乎在任何地方都实现了它。你说得对,双重压缩几乎没用,但它不应该对用户造成困扰,也许只是增加了 1% 的传输大小。
  • 我通过 IIS 设置在网站上使用了 Gzip 压缩。创建 zip 文件是 Web 应用程序的一项功能 - 用户生成一些内容,这些内容创建为单独的 txt 文件,并压缩到单个存档中。问题是当他们尝试在 IIS 压缩打开时下载此存档时 - 他们需要将文件解压缩两次。这是我要避免的。

标签: asp.net http compression zip


【解决方案1】:

没关系,我发现了问题所在:http://support.microsoft.com/kb/841120

虽然这篇文章说的是 Sharepoint,但同样的解决方案也适用于我的情况。我通过在我的代码中将 MIME 类型更改为“application/octet-stream”而不是“application/x-zip-compressed”来修复它(因为我正在动态生成 zip 文件)。这似乎已经解决了。

【讨论】:

    【解决方案2】:

    1.通过在命令提示符处执行以下命令来禁用全局静态压缩: adsutil 设置 w3svc/filters/compression/parameters/HcDoStaticCompression false

    请查看网站以了解上述详细信息,因为这些信息来自:

    http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/502ef631-3695-4616-b268-cbe7cf1351ce.mspx?mfr=true

    还可以查看http://blogs.msdn.com/b/carloc/archive/2008/12/31/how-to-disable-http-compression-for-specific-file-types.aspx

    这可能会有所帮助

    【讨论】:

    • 压缩文件是动态创建的,所以我怀疑关闭静态压缩会有所帮助。我正在做第二个链接中文章最后一段所讨论的内容 - 在内存中创建内容并将其流式传输到客户端。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 2011-02-21
    • 1970-01-01
    • 2016-07-09
    相关资源
    最近更新 更多