Web Api gzip 压缩

9
我曾经使用过URL进行Web API压缩,但是当我在Fiddler头部看到输出时,并不是zip格式。有多个Zip选项可用,例如GZIP、BZIP2和DEFLATE,不确定该选择哪个,请在这里提供帮助。
我已经尝试了以下解决方案,但都无法正常工作:

http://benfoster.io/blog/aspnet-web-api-compression

1个回答

17

有多个Zip选项可用,例如GZIP、BZIP2 DEFLATE,不确定应该使用哪一个,请帮助解答。

这个列表将被发送到服务器并让其知道客户端关于压缩的偏好。它的意思是“我首选GZIP。如果服务器不支持GZIP,则回退到BZIP2 DEFLATE压缩。如果不支持BZIP2 DEFLATE,则服务器不会进行任何压缩。”

已经有人创建了一个nuget包,使用了你在问题中提出的那个实现。该包名为Microsoft.AspNet.WebApi.MessageHandlers.Compression,安装了以下两个包:

  • Microsoft.AspNet.WebApi.Extensions.Compression.Server
  • System.Net.Http.Extensions.Compression.Client

如果您不需要客户端库,则只需在Web API项目中使用服务器端包。

要使用它,您需要修改在Gloabl.asax.csApplication_Start方法的末尾添加以下行:

GlobalConfiguration.Configuration.MessageHandlers.Insert(0, new ServerCompressionHandler(new GZipCompressor(), new DeflateCompressor()));

要了解有关此软件包的更多信息,请查看此链接


你好,我已经按照以下步骤进行操作: 在VS 2013 Web API中创建新的解决方案,添加NuGet包并配置Global.ascx...当我运行示例代码并在Fiddler中检查时,仍然没有压缩。 - user3227615
在向服务器发送请求之前,您需要通过添加“Accept-Encoding: gzip, deflate”来配置标头。Fiddler不会自动添加它,但浏览器会。 - CodeNotFound
@user3227615,你测试了我在评论中说的吗? - CodeNotFound
我按照您建议的步骤进行了测试,在Postman中显示压缩数据,而在Fiddler中则没有显示。在Postman中,GZip运行良好。在客户端方面,我们需要编写任何代码来解压文件吗? - user3227615
如果您正在使用浏览器,则不行。如果您正在使用 Fiddler,则可以在响应中看到一个用于解压缩的按钮。如果它有效,请考虑将其标记为答案并打开另一个线程以处理其他问题;-) - CodeNotFound

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接