首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

IIS 7.0 動態壓縮間歇失效排查:頻率閾值、CPU 限制與應用程式集區設定

     編輯:程式設計綜合問答

現象

啟用動態壓縮後,有時生效 (回傳 Content-Encoding: gzip),有時不生效 (無壓縮標頭),無固定規律。

核心機制:IIS 動態壓縮啟發條件

IIS 並非對所有回應都壓縮,有內建啟發式閾值:

  • 頻率閾值:同一 URL 在短時間內被請求達到特定次數 (預設較高),才啟用壓縮緩存。
  • CPU 使用率保護:伺服器 CPU 高載時自動停用壓縮以保留運算資源。
  • 最小檔案大小:過小回應 (預設 < 2700 bytes) 不壓縮,得不償失。

排查與修正步驟

1. 確認壓縮模組已安裝並啟用

# 管理員 PowerShell
Install-WindowsFeature Web-Dyn-Compression
# 或「伺服器管理員」→ 功能 → 動態內容壓縮

2. 修改 applicationHost.config 降低閾值 (需管理員權限)

<system.webServer>
  <urlCompression doDynamicCompression="true" />
  <httpCompression 
      directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"
      minFileSizeForComp="1024" > <!-- 降低最小檔案大小 -->
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
    <dynamicTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="application/json" enabled="true" />
      <add mimeType="application/javascript" enabled="true" />
      <add mimeType="*/*" enabled="false" />
    </dynamicTypes>
  </httpCompression>
</system.webServer>

3. 應用程式集區 CPU 限制檢查

  • IIS 管理員 → 應用程式集區 → 進階設定 → CPU 限制 / 限制動作。
  • 若設定「限制」且觸發,Worker Process 會被節流,壓縮模組可能停用。

4. 使用失敗請求追蹤 (FREB) 精確定位

  1. 啟用「失敗請求追蹤」規則,狀態碼 200、時間 > 0。
  2. 重現問題後查看 COMPRESSION_DISABLED、COMPRESSION_SUCCESS 事件。

參考文件

百度經驗詳細圖文教學:IIS7 開啟壓縮無效解決辦法

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved