如何使用 IIS 启用压缩

问题描述

我已关注 this document 并为我的网站启用了动态和静态压缩。

enter image description here

但是当我测试网站 here 时,没有启用压缩。

enter image description here

我已验证 HttpCompression

<system.webServer>
  <httpCompression directory="%systemDrive%\inetpub\temp\IIS Temporary Compressed Files">
    <staticTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/javascript" enabled="true" />
      <add mimeType="application/atom+xml" enabled="true" />
      <add mimeType="application/xaml+xml" enabled="true" />
      <add mimeType="image/svg+xml" enabled="true" />
      <add mimeType="*/*" enabled="false" />
    </staticTypes>
    <dynamicTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/x-javascript" enabled="true" />
      <add mimeType="application/javascript" enabled="true" />
      <add mimeType="*/*" enabled="false" />
    </dynamicTypes>
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
  </httpCompression>
</system.webServer>

我还检查了以下 IIS 设置:

enter image description here

解决方法

我从您发布的标头中看到该站点位于 cloudfront 后面(即 via 和 x-cache 标头)。

因此您可能需要调查让 cloudfront 提供压缩数据:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html

我对 cloudfront 不是特别熟悉,但由于它添加了 via 标头,因此它充当了代理..

..您的 IIS 设置屏幕截图中有 noCompressionForProxies = True

这里有一些关于更改设置的信息 https://community.spiceworks.com/topic/1989103-help-with-enabling-nocompressionforproxies-in-applicationhost-config-in-iis

作为第一个测试,您可以尝试绕过 Cloudfront 访问您的站点以直接测试 IIS 设置。