Asp.net

如何在 IIS7 中進行 gzip 壓縮?

  • April 24, 2009

我已經為 IIS7 安裝了靜態和動態壓縮,並web.config在我的應用程序Virtual Folder級別設置了這兩個值。據我了解,我不再需要在伺服器或站點級別啟用壓縮,我可以使用我的 web.config 文件在每個文件夾的基礎上對其進行管理。

我的.config文件中有兩個設置,我已經設置為我的應用程序自定義 gzip:

<httpCompression dynamicCompressionDisableCpuUsage="90"
   dynamicCompressionEnableCpuUsage="0">
 <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
 <dynamicTypes>
   <remove mimeType="*/*"/>
   <add mimeType="*/*" enabled="true" />
 </dynamicTypes>
</httpCompression>
<urlCompression doDynamicCompression="true"
   dynamicCompressionBeforeCache="true" />

但是,當我執行應用程序時,我可以清楚地看到沒有使用 gzip,因為我的頁面大小相同。我還在為 FireFox 使用YSlow,這也證實了我的頁面沒有被壓縮。

我在這裡想念什麼?在 IIS6 中,指定文件類型並將壓縮級別設置在 0-10 之間很簡單。我沒有看到需要指定文件類型或壓縮級別,因為預設值似乎涵蓋了文件類型,而且我在任何地方都沒有看到級別。

在 iis 7 beta 期間,forums.iis.net 上有一個關於此的主題。原來那個人沒有安裝模組,但聽起來你已經從你的開場白中排除了這一點。

微軟對他的關鍵建議是啟用失敗的請求跟踪以找出問題所在。這可能是 IIS7 中最被低估的功能之一,但肯定是最強大的功能之一。

  • 打開 IIS 管理器。
  • 轉到您的站點,然後在操作窗格(最右側)上,點擊“配置”部分下的“失敗的請求跟踪…”。
  • 點擊“啟用”。
  • 然後,在功能視圖中,點擊“失敗的請求跟踪規則”。點擊添加,下一步,狀態碼輸入200,下一步,點擊完成。

如果您在操作窗格中沒有看到“失敗的請求跟踪”,則需要將該功能添加到伺服器 - 使用“添加角色服務”嚮導(執行狀況和診斷\跟踪)或通過 Web 平台安裝程序(產品\伺服器\IIS:跟踪),然後關閉並重新打開 IIS 管理器。

接下來,重新執行您的測試。這將生成一些日誌資訊供我們檢查。

查看 c:\inetpub\logs\FailedReqLogFiles\w3svcx。您將看到一堆名為 fr000xx.xml 的文件。在瀏覽器中打開其中任何一個。(順便說一句,如果您將這些文件複製到任何地方,請確保 freb.xsl 在那裡。另外,不要刪除 freb.xsl - 如果這樣做,只需刪除整個目錄或從另一個位置複製它,因為 IIS 只會創建每個文件夾一次。)

點擊“請求詳細資訊”選項卡並選擇“完整請求跟踪”。在頁面中搜尋“壓縮”——您應該可以在多個區域找到它;一次用於靜態內容,一次用於動態內容。

如果您沒有找到其中任何一個,則說明 IIS 配置不正確。如果您確實找到了它們,您應該會看到它們後跟一個compression_success 和一個compression_do。成功是不言自明的;“do”表示它做了什麼——在我的例子中,它顯示“OriginalSize 1462784 CompressedSize 179482”

由於您的不起作用,希望您會看到一些不同的東西來幫助您解決問題。

確保在完成後通過在您的網站的操作窗格中禁用失敗的請求跟踪來關閉此功能。

引用自:https://stackoverflow.com/questions/786638