我有一个在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
答案 0 :(得分:0)
Firebug中响应的状态代码是什么?我的第一个猜测是它是一个HTTP / 401,你在这里看到的是请求你的NTLM证书的身份验证页面。