根据Firebug,静态文件只在Fiddler运行时被压缩 - 为什么?

时间:2011-04-18 10:00:31

标签: iis iis-6 compression firebug fiddler

我有一个在IIS 6.0中运行的ASP.NET MVC站点,并希望它压缩它所服务的静态css和js文件。该站点具有通配符映射,因此所有请求(包括无扩展名URL)都通过aspnet_isapi.dll发送。静态内容保存在Content和Scripts文件夹中。

我执行了以下步骤:

  • 在IIS控制台(网站 - >服务标签)中为应用程序文件和静态文件启用HTTP压缩。

  • 添加名为“HTTP Compression”的Web服务扩展,引用inetsrv \ gzip.dll

  • 编辑MetaBase.xml,将css和js添加到gzip的HcFileExtensions属性并缩小IIsCompressionScheme条目。

  • 从Content和Scripts文件夹中删除了通配符映射(通过暂时使它们成为子站点,删除通配符映射,将它们还原回普通文件夹)。这应该确保IIS在没有ASP.NET参与的情况下提供这些文件。

我现在得到的奇怪行为是,当Fiddler运行时,它报告css和js的压缩文件大小,并且Firebug同意(例如jquery-ui.min.js为47.9KB)。但当我禁用Fiddler并按CTRL + F5时,Firebug会报告未压缩的大小(jquery-ui.min.js为194.2KB)和意外的Content-Type和Content-Length。

请求标头不会更改,但查看响应标头很有意思。 随着Fiddler运行,Firebug报告(对于jquery-ui.min.js):

Content-Length  49009
Content-Type    application/x-javascript
Content-Encoding    gzip
Last-Modified   Wed, 26 Jan 2011 11:59:25 GMT
Accept-Ranges   bytes
Etag    "80cce07950bdcb1:a03"
Vary    Accept-Encoding
Server  Microsoft-IIS/6.0
X-Powered-By    ASP.NET
x-ua-compatible IE=8

没有Fiddler:

Proxy-Authenticate  NTLM
Content-Length  415
Keep-Alive  timeout=5, max=100
Connection  Keep-Alive
Content-Type    text/html; charset=iso-8859-1

为什么Content-Type现在是text / html? 415的Content-Length看起来很奇怪,它与Firebug报告的响应大小的194.2KB不匹配。其他各种标题不再存在。

为完整起见,请求标题为:

Host    my-windows-box
User-Agent  Mozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)
Accept  */*
Accept-Language en-gb,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Proxy-Connection    keep-alive
Referer http://my-windows-box/site
Cookie  ASP.NET_SessionId=nbsb2hbkjdtcgjdntco25zqc
Pragma  no-cache
Cache-Control   no-cache

1 个答案:

答案 0 :(得分:0)

Firebug中响应的状态代码是什么?我的第一个猜测是它是一个HTTP / 401,你在这里看到的是请求你的NTLM证书的身份验证页面。