IIS6中的ASP.NET MVC压缩选项

时间:2009-03-16 06:30:53

标签: asp.net-mvc iis-6 compression

目前我已经坚持使用IIS6 for ASP.NET-MVC(因为我无法升级到Server 2008)。它似乎不知道我的RESTful URL是动态文件,并没有压缩它们。

所有旧的.aspx文件都是压缩的(如Fiddler所示),但不是'/products/1001'类型的URL。

有没有办法让IIS6在IIS6中压缩我的ActionResults而不使用像ActionFilter for compression这样的东西。

我假设IIS7足够聪明,知道它们是动态的。

如果你能告诉我IIS6如何知道哪些文件是动态的,那么

奖励积分!

3 个答案:

答案 0 :(得分:5)

由于ASP.NET的HTTP压缩通常是从版本1.0开始使用HttpModules实现的,而HttpModules仍然属于MVC框架使用的ASP.NET请求管道,因此您仍然可以使用HttpModule注入GZIP或deflate响应过滤

在这里,您可以找到一个非常好的,开源的,随时可以发布的实现: HttpCompress by Ben Lowery(在Google Code下载)

您只需要添加对DLL的引用,并在web.config中添加几行。它已经处理了非常奇特和罕见的案例和例外。您可以在web.config中添加排除项,而不是基于文件扩展名(如在IIS6中),但在mime类型上,这可能正是您所需要的。

我应该补充一点,我实际上已经使用这个库在IIS6上运行ASP.NET MVC网站,所以我可以确认这在实践中有效。

答案 1 :(得分:0)

在Web配置中,您应该注册StaticFileHandler和HTTP Module

<add verb="GET,HEAD,POST" path="*" type="[Web.Front.Modules].StaticFileHandler"/>
<add name="HttpCompressionModule" type="[Web.Front.Modules].HttpCompressionModule"/>

您会找到here

的源代码

但不要忘记在IIS上启用压缩

答案 2 :(得分:0)

这是使用通配符映射和无扩展名网址对MVC和IIS 6起作用的一个选项:

  1. 使用管理工具
  2. 全局设置动态和静态压缩
  3. 编辑metabase.xml,以便CompressionSchemes中的HcScriptFileExtensions为空。这将尝试压缩所有内容(包括jpgs和gif)。
  4. 使用DoDynamicCompression =“false”属性关闭文件夹级别的动态压缩。这假定您的所有静态内容都是一个目录。
  5. 在HcFileExtensions属性中添加您想要压缩的静态文件扩展名(css,js等)。
  6. 这是一种解决方法,但我暂时停留在Server 2003和IIS 6上。