2008-08-22 87 views
9

我有一個正在處理的ASP.NET webforms應用程序(3.5 SP1),並嘗試啓用管道中的gzip fpr HTML和CSS。我正在使用this implementation(並嘗試了一些掛鉤到Application_BeginRequest的其他項),並且它似乎正在破壞頁面使用的外部CSS文件,但是間歇性地...突然,所有樣式都會在頁面刷新中消失,保持這種狀態一會兒,然後突然又開始工作了。爲什麼ASP.NET gzip壓縮會破壞CSS?

IE7和FF3都表現出這種行爲。使用Web開發人員工具欄查看CSS時,它會返回亂碼。緩存控制標題以「私有」的形式出現,但我不知道是否這是一個促成因素。

此外,這是在ASP.NET開發服務器上運行。也許這對IIS很好,但我正在開發XP,它會是IIS5。

回答

5

是否只有CSS文件被損壞? JS文件(或任何其他靜態文本文件)通過了嗎?

如果直接瀏覽到CSS文件,還可以複製行爲嗎?

我一直在使用這種方法只啓用壓縮在Windows 2003服務器的IIS:

  1. IIS→Web站點→屬性→服務選項卡,選中這兩個框
  2. IIS→Web服務擴展→單擊鼠標右鍵,添加新
     
        Name 
         Http Compression 
        Required Files 
         %systemroot%\system32\inetsrv\gzip.dll
  3. IIS→右擊頂級節點,互聯網信息服務,檢查啓用直接元數據庫編輯
  4. 備份和編輯%systemroot%\system32\inetsrv\MetaBase.xml
    1. 查找Location ="/LM/W3SVC/Filters/Compression/gzip"
      • 添加pngcssjs和任何其他靜態文件擴展名HcFileExtensions
      • 添加aspx和任何其他可執行文件擴展HcScriptFileExtensions
      • 保存
  5. 重新啓動IIS(運行iisreset

如果您有Windows 2003/2008服務器與您一起玩,可以試試這種方法。

+1

IE7/8正在下載損壞的zip文件,而Firefox/Chrome/Opera沒有。這似乎是因爲IIS6是gzip壓縮zip文件,這會使IE不高興。您的解決方案解決了我的問題,IIS不再嘗試重新壓縮壓縮文件。 – 2009-05-16 16:39:52

0

如果您要在IIS 6或IIS 7上部署,只需使用內置的IIS壓縮。我們正在生產站點上使用它來壓縮HTML,CSS和JavaScript,沒有任何錯誤。它還會在服務器上緩存壓縮版本,所以壓縮命中只需要一次。

+0

不幸的是,使用默認設置似乎打破了IE7/8中的zip文件。事實證明,默認情況下,IIS想嘗試壓縮zip文件,這很愚蠢。 – 2009-05-16 16:41:17