我有一個ASP.NET MVC站點在IIS 6.0中運行,並希望它壓縮它所服務的靜態css和js文件。該網站有一個通配符映射,所以所有請求(包括無擴展名的URL)都通過aspnet_isapi.dll進行。靜態內容保存在「內容和腳本」文件夾中。根據Firebug,靜態文件只在Fiddler運行時被壓縮 - 爲什麼?
我已經進行了如下步驟:
啓用應用程序文件和靜態文件在IIS控制檯(網站 - >服務選項卡)HTTP壓縮。
添加了一個名爲 「HTTP壓縮」 指的是INETSRV \ gzip.dll
編輯的MetaBase.xml到CSS和JS添加到的gzip的HcFileExtensions財產和放氣IIsCompressionScheme條目的Web服務擴展。
從內容和腳本文件夾中刪除通配符映射(通過暫時使它們變成子站點,刪除通配符映射,將它們恢復到普通文件夾)。這應該確保IIS在不涉及ASP.NET的情況下提供這些文件。
奇怪的行爲我現在得到的是,當提琴手運行時,它報告了CSS和JS壓縮文件大小和Firebug的同意(例如47.9KB爲jQuery的ui.min.js)。但是,當我禁用小提琴手,按CTRL + F5,螢火報告未壓縮的尺寸(194.2KB爲jQuery的ui.min.js)和意外的內容類型和內容長度。
請求頭不改,但要看響應頭也同樣吸引。 隨着提琴手運行,螢火報告(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
沒有提琴手:
Proxy-Authenticate NTLM
Content-Length 415
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Content-Type text/html; charset=iso-8859-1
爲什麼是內容類型現在text/html的?內容長度415看起來很奇怪,它與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
的狀態代碼是200,和給定文件提琴手報告響應的大小等於壓縮文件大小(以荏苒各種JS,在Windows資源管理器css文件確認)。 – DGreen 2011-05-03 12:22:22