copy C:\Windows\system32\inetsrv\metabase.xml D:\Backup\
HTTP Compressionc:\windows\system32\inetsrv\gzip.dll搜索 IIsCompressionScheme (3 處:deflate、gzip、Parameters),修改 gzip/deflate 區塊:
HcDynamicCompressionLevel = 9 (0-10,9 性價比最高)HcFileExtensions = htm, html, txt, js, css, xml, json (靜態文件)HcScriptFileExtensions = asp, aspx, php, dll, exe (動態文件,或留空壓縮所有)HcDoDynamicCompression = true (必須啟用動態壓縮)保存後重啟 IIS:iisreset
<?php
/**
* 透明 Gzip 壓縮輸出
* 放在所有輸出之前調用,或作為 ob_start 回調
*/
function ob_gzip($content) {
// 條件檢查
if (headers_sent() ||
!extension_loaded('zlib') ||
!strstr($_SERVER['HTTP_ACCEPT_ENCODING'] ?? '', 'gzip')) {
return $content;
}
// 壓縮 (級別 9,附加標記便於調試)
$content = gzencode($content . " OK", 9);
// 發送頭部
header('Content-Encoding: gzip');
header('Vary: Accept-Encoding');
header('Content-Length: ' . strlen($content));
return $content;
}
// 使用方式 1:手動調用 (輸出前)
echo ob_gzip($htmlContent);
// 使用方式 2:輸出緩衝回調 (自動攔截所有輸出)
ob_start('ob_gzip');
// ... 正常 echo/print ...
ob_end_flush();
Content-Encoding: gzipcurl -H "Accept-Encoding: gzip" -I https://example.com/